如何撤消与冲突的git合并

时间:2011-04-21 08:20:38

标签: git merge git-merge git-merge-conflict

我在分行mybranch1mybranch2已从mybranch1分叉,并在mybranch2中进行了更改。

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

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

6 个答案:

答案 0 :(得分:1205)

最新的Git:

git merge --abort

这会尝试将您的工作副本重置为合并前的状态。这意味着它应该从合并之前恢复任何未提交的更改,尽管它不能始终可靠地执行此操作。通常,您不应该与未提交的更改合并。

1.7.4版之前:

git reset --merge

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

版本1.6.2之前:

git reset --hard

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

答案 1 :(得分:104)

实际上,值得注意的是git merge --abort只相当于git reset --merge,因为MERGE_HEAD存在。这可以在git help for merge命令中读取。

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在日常工作中更有用。

答案 2 :(得分:102)

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

git merge --abort

答案 3 :(得分:9)

如果使用最新的Git,

git merge --abort

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

git reset --merge

git reset --hard

答案 4 :(得分:7)

您可以先执行两件事,即通过命令撤消合并

git merge --abort

您可以通过命令暂时进入先前的提交状态

git checkout 0d1d7fc32 

答案 5 :(得分:0)

源代码树

如果您不提交合并,则只需双击另一个分支(= checkout),当sourcetree询问您有关放弃所有更改的信息时,就表示同意