我在分行mybranch1
。 mybranch2
已从mybranch1
分叉,并在mybranch2
中进行了更改。
然后,在mybranch1
上,我完成了git merge --no-commit mybranch2
它表明合并时存在冲突。
现在我想丢弃所有内容(merge
命令),以便mybranch1
恢复到以前的状态。
我不知道我该怎么做。
答案 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询问您有关放弃所有更改的信息时,就表示同意