首页 > 解决方案 > 删除 git 中已提交的更改

问题描述

我不小心将更改推送到我Dev现在想要摆脱的分支。不是还原,而是完全删除它们。由于对分支设置了约束Dev,我不能直接提交到该分支,而是通过拉取请求。这些是我的步骤:我创建了一个基于 的新分支Dev,称为Dev_Reset. 然后:

git reset 4db52f3  --hard
HEAD is now at 4db52f3 last_changes_to_keep

git push origin -f

Dev_Reset 分支然后被推送到远程仓库。Dev_Reset但是,当我创建拉取请求时,没有要合并的差异,因为它表示和之间没有差异Dev。如果我查看 Visual Studio 中分支的历史记录,我会发现HEADS(localDevDev_Reset) 都处于 commit 状态4db52f3,但由于某种原因,我无法将其推送到我的主Dev分支。

此外,在历史概览中,我仍然可以看到我想使用git reset xxx --hard命令删除的所有提交,列在HEADS. 没有其他分支指向我要删除的任何提交。

我知道 的危险git reset --hard,但目前我是唯一一个在这个分支上工作的人。如何使所有这些提交消失并将我的主Dev分支重置为正确的提交?

谢谢

编辑(2020 年 3 月 9 日)正如 Igal S 和 LeGEC 在下面建议的那样,我必须调整 Dev 分支的设置,然后我可以在此处应用我的更改。注意到其他同事提取分支的担忧,我的团队已被告知。目前,最近没有人拉过相应的分支。谢谢您的帮助!

标签: gitvisual-studio-2019pull-requestgit-reset

解决方案


从远程分支中删除这些更改的唯一方法是git reset --hard像您一样执行操作,然后强制将它们推送到远程分支。

假设您的政策允许这样做并且您有权这样做。您正在为远程 git 使用哪个系统?

拉取请求仅用于提交从分支添加到另一个。我不熟悉任何允许使用拉取请求删除提交(即重写历史记录)的系统


推荐阅读