我在mybranch1上。Mybranch2是从mybranch1分叉出来的,在Mybranch2中做了一些改变。

然后,在mybranch1上,我做了git merge——no-commit mybranch2 这说明合并过程中存在冲突。

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


当前回答

最新Git:

git merge --abort

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

在版本1.7.4之前:

git reset --merge

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

在版本1.6.2之前:

git reset --hard

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

其他回答

最新Git:

git merge --abort

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

在版本1.7.4之前:

git reset --merge

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

在版本1.6.2之前:

git reset --hard

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

假设您正在使用最新的git,

git merge --abort

实际上,值得注意的是,git merge——abort只相当于git reset——merge,前提是存在MERGE_HEAD。这可以在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在日常工作中更有用。

Sourcetree

如果你没有提交你的合并,那么只需双击另一个分支(=checkout),当sourcetree询问你关于丢弃所有更改时,然后同意

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

git merge --abort

or

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

git checkout 0d1d7fc32