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

我在分支mybranch1上。mybranch2mybranch1分叉,在mybranch2中进行了更改。

然后,在mybranch1上,我完成了git merge --no-commit mybranch2它显示合并时存在冲突。

现在我想丢弃所有内容(merge命令),以便mybranch1恢复到以前的状态。我不知道该怎么做。

556851 次浏览

最新Git:

git merge --abort

这会尝试将您的工作副本重置为合并前的任何状态。这意味着它应该恢复合并前的任何未提交的更改,尽管它不能总是可靠地这样做。通常你不应该与未提交的更改合并。

在版本1.7.4之前:

git reset --merge

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

在版本1.6.2之前:

git reset --hard

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

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

git merge --abort

实际上,值得注意的是,在给定MERGE_HEAD的情况下,git merge --abort仅等效于git reset --merge。这可以在git帮助合并命令中读取。

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 merge --abort

您可以通过命令临时转到您之前的提交状态

git checkout 0d1d7fc32

如果使用最新的Git,

git merge --abort

否则,这将在旧的git版本中完成工作

git reset --merge

git reset --hard

由于之前没有人提到过这个,如果你得到这个错误

fatal: Could not reset index file to revision 'HEAD'.

当尝试上述方法时,您可以尝试添加文件(暂存它们),然后而不是提交git stash,您可以使用-m标志并给它一个标签,这样您就知道如果您偶然需要恢复最后一个状态,您可以使用git stash list找到藏匿。

对我来说,git reset --mergegit merge --abort失败了,上面的错误。