我不小心在本地主分支上运行了gitmergesome_other_branch。我还没有将更改推送给origin master。如何撤消合并?


合并后,git状态显示:

# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.

我如何撤销所有这些提交?


当前回答

最简单的机会,比这里说的任何事情都简单得多:

删除本地分支(本地,而不是远程),然后再次拉动它。这样,您将撤消主分支上的更改,任何人都将受到您不想推送的更改的影响。重新开始。

其他回答

您可以使用git reflog查找上一次结账。有时候,这是一个你想回到的好状态。

具体而言,

$ git reflog
$ git reset --hard HEAD@{0}

如果您想要一个命令行解决方案,我建议您只使用MBO的答案。

如果您是新手,您可能会喜欢图形化方法:

启动gitk(从命令行,或在文件浏览器中单击鼠标右键(如果有))您可以很容易地在那里发现合并提交-从顶部开始的第一个节点有两个父节点按照第一个/左侧父级的链接(合并前当前分支上的父级,通常为红色)在所选提交上,右键单击“将分支重置到此处”,选择此处的硬重置

它可以通过多种方式实现。

1) 中止合并

如果您处于错误合并(错误地使用了错误的分支)之间,并且希望避免合并,以便最新返回分支,如下所示:

git merge --abort

2) 将HEAD重置为远程分支

如果您从远程开发分支工作,可以将HEAD重置为远程分支上的最后一次提交,如下所示:

git reset --hard origin/develop

3) 删除当前分支,然后再次从远程存储库签出

考虑到您正在本地repo中开发分支,该分支与远程/开发分支同步,您可以执行以下操作:

git checkout master 
##to delete one branch, you need to be on another branch, otherwise you will fall with the branch :) 

git branch -D develop
git checkout -b develop origin/develop

您只能使用两个命令通过特定提交还原合并或重新启动:

git reset--硬commitHash(您应该使用要重新启动的commit,例如44a587491e32eafa163ca7738)git push origin HEAD--force(将新的本地主分支发送到origin/master)

祝你好运,加油!

最简单的答案是奥迪尼奥-维尔蒙特给出的答案

首先执行git重置--合并ORIG_HEAD

对于那些希望在推送更改后重置的用户,请执行以下操作(因为这是第一篇关于git重置合并问题的文章)

git推原点HEAD—力

这将以这样一种方式重置,即您不会在拉动后再次获得合并的更改。