如何撤消带有冲突的Git合并

How to undo a git merge with conflicts

我在EDOCX1支〔0〕上。mybranch2来自mybranch1mybranch2发生了变化。

那么,在mybranch1上,我已经做了git merge --no-commit mybranch2了。它显示合并时存在冲突。

现在我要做的是放弃所有的东西(merge命令),这样mybranch1就会回到原来的状态。我不知道该怎么办。


最新Git:

1
git merge --abort

这将尝试将工作副本重置为合并前的状态。这意味着它应该从合并之前恢复任何未提交的更改,尽管它不能总是如此可靠。通常情况下,您不应该与未提交的更改合并。

1.7.4版之前:

1
git reset --merge

这是较旧的语法,但与上面的语法相同。

1.6.2版之前:

1
git reset --hard

删除所有未提交的更改,包括未提交的合并。有时,即使在支持上述命令的较新版本的Git中,这种行为也很有用。


实际上,值得注意的是,鉴于存在MERGE_HEADgit merge --abort只相当于git reset --merge。这可以在合并命令的git帮助中读取。

1
git merge --abort # is equivalent to git reset --merge when MERGE_HEAD is present.

合并失败后,在没有MERGE_HEAD的情况下,可以用git reset --merge撤消合并失败,但不一定用git merge --abort撤消合并失败,因此它们不仅是同一事物的新旧语法。

就我个人而言,我发现git reset --merge在日常工作中更有用。


假设您使用的是最新的Git,

1
git merge --abort