904

我在分支上mybranch1mybranch2从中分叉mybranch1并在 中进行了更改mybranch2

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

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

4

6 回答 6

1559

最新的 Git:

git merge --abort

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

在版本 1.7.4 之前:

git reset --merge

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

在版本 1.6.2 之前:

git reset --hard

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

于 2011-04-21T08:23:30.297 回答
145

实际上,值得注意的是,thatgit merge --abort仅等同于git reset --mergegiven that MERGE_HEADis present。这可以在 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在日常工作中更有用。

于 2014-06-09T06:45:20.447 回答
109

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

git merge --abort
于 2011-04-21T08:23:39.257 回答
43

如果使用最新的 Git,

git merge --abort

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

git reset --merge

或者

git reset --hard
于 2020-06-26T05:34:27.563 回答
7

您可以做两件事,首先通过命令撤消合并

git merge --abort

或者

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

git checkout 0d1d7fc32 
于 2020-02-21T16:28:22.413 回答
0

源树

如果您不提交合并,则只需双击另一个分支(=checkout),当 sourcetree 询问您是否放弃所有更改时,请同意

于 2020-02-21T16:12:06.487 回答