我不小心在本地主分支上运行了gitmergesome_other_branch。我还没有将更改推送给origin master。如何撤消合并?
合并后,git状态显示:
# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.
我如何撤销所有这些提交?
我不小心在本地主分支上运行了gitmergesome_other_branch。我还没有将更改推送给origin master。如何撤消合并?
合并后,git状态显示:
# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.
我如何撤销所有这些提交?
当前回答
最简单的答案是奥迪尼奥-维尔蒙特给出的答案
首先执行git重置--合并ORIG_HEAD
对于那些希望在推送更改后重置的用户,请执行以下操作(因为这是第一篇关于git重置合并问题的文章)
git推原点HEAD—力
这将以这样一种方式重置,即您不会在拉动后再次获得合并的更改。
其他回答
如果您注意到需要在合并后立即恢复,并且在合并尝试后还没有做任何其他操作,则只需发出以下命令:git reset--hard HEAD@{1}。
本质上,如果在合并之后没有提交任何其他内容,那么合并sha将指向HEAD@{0},因此HEAD@{1}将是合并之前的前一点。
您只能使用两个命令通过特定提交还原合并或重新启动:
git reset--硬commitHash(您应该使用要重新启动的commit,例如44a587491e32eafa163ca7738)git push origin HEAD--force(将新的本地主分支发送到origin/master)
祝你好运,加油!
使用此命令中止合并:
git merge—中止
如果您想要一个命令行解决方案,我建议您只使用MBO的答案。
如果您是新手,您可能会喜欢图形化方法:
启动gitk(从命令行,或在文件浏览器中单击鼠标右键(如果有))您可以很容易地在那里发现合并提交-从顶部开始的第一个节点有两个父节点按照第一个/左侧父级的链接(合并前当前分支上的父级,通常为红色)在所选提交上,右键单击“将分支重置到此处”,选择此处的硬重置
奇怪的是,缺少了最简单的命令。大多数答案都是有效的,但撤销你刚才做的合并,这是一种简单而安全的方法:
git reset --merge ORIG_HEAD
引用ORIG_HEAD将指向合并之前的原始提交。
(--merge选项与合并无关。它就像git-reset--hard ORIG_HEAD,但更安全,因为它不会触及未提交的更改。)