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


合并后,git状态显示:

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

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


当前回答

如果您提交了合并:

git reset HEAD~1
# Make sure what you are reverting is in fact the merge files
git add .
git reset --hard

其他回答

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

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

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

git推原点HEAD—力

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

如果您的合并和相应的提交尚未被推送,您可以始终切换到另一个分支,删除原始分支并重新创建它。

例如,我意外地将一个开发分支合并到master中,并想撤消它。使用以下步骤:

git checkout develop
git branch -D master
git branch -t master origin/master

瞧!Master与原点处于同一阶段,您的错误合并状态将被清除。

如果分支被合并而未被推送,则下面给出的git reset命令将用于撤消合并:

git reset --merge ORIG_HEAD

例子:

git reset --merge origin/master

您可以使用git reset命令。

git reset-将当前HEAD重置为指定状态。git重置[--混合|--soft|--hard|--merge][-q][]git-reset[-q][][-]…git重置--补丁[] [--] […]

GIT重置

对于较新的Git版本,如果您尚未提交合并,并且存在合并冲突,您可以简单地执行以下操作:

git merge --abort

来自man git merge:

只有在合并导致冲突后才能运行[This]。gitmerge--abort将中止合并过程并尝试重建合并前的状态。