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


合并后,git状态显示:

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

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


当前回答

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

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

祝你好运,加油!

其他回答

如果您正在合并过程中,您可以随时中止它

git merge --abort

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

git reset --merge ORIG_HEAD

例子:

git reset --merge origin/master

我能够用一个不需要查找提交id的命令解决这个问题。

git reset --hard remotes/origin/HEAD

接受的答案对我不起作用,但这个命令实现了我所期望的结果。

首先,确保你已经完成了一切。然后将存储库重置为以前的工作状态:$git重置f836e4c1fa51524658b9f026eb5efa24af3a36或使用--hard(这将删除所有本地的、未提交的更改!):$git重置f836e4c1fa51524658b9f026eb5efa24af3a36--硬使用错误合并提交之前的哈希。通过以下方式检查要在先前正确版本的顶部重新提交的提交:$git日志4c3e23f529b581c3cbe95350e84e66e3cb05704f提交4c3e23f529b581c3cbe95350e84e66e3cb05704f...提交16b373a96b0a353f7454b141f7aa6f548c979d0a...通过以下方式在存储库的正确版本顶部应用正确的提交:通过使用cherry-pick(一些现有提交引入的更改)git樱桃pick ec59ab844cf504e462f011c8cc7e5667bb2e9c7或者通过以下方式选择提交范围:在合并之前首先检查正确的更改:数字差异5216b24822ea1c48069f648449997879bb49c070..4c3e23f529b581c3cbe95350e84e66e3cb05704f在合并之前首先检查正确的更改:git cherry pick 5216b24822ea1c48069f648449997879bb49c070..4c3e23f529b581c3cbe95350e84e66e3cb05704f其中这是您提交的正确提交的范围(不包括错误提交的合并)。

参见Git书的第4章和Linus Torvalds的原始帖子。

要撤消已推送的合并,请执行以下操作:

git revert -m 1 commit_hash

如果您再次提交分支,请务必还原还原,就像Linus所说的那样。