如何重置到合并提交之前的状态?

时间:2017-02-01 15:29:35

标签: git git-merge

我解决了一些冲突并提交了合并。是否可以准确恢复运行git commit之前的合并状态,而不是更改索引或工作树?对于常规单父提交,执行此操作的命令为git reset --soft HEAD^,但对于合并提交,它不会按预期工作,因为没有单个父级要重置为。

3 个答案:

答案 0 :(得分:2)

你有commit-sha for your merge state。通过git loggit reflog命令查找提交。

$ git reflog                       # copy the commit-sha of merge state
$ git reset --soft <commit-sha>

$ git status                       # see the undo changes

N.B。如果您执行--soft reset,那么您提交的提交更改将存在于您的工作目录中。

答案 1 :(得分:1)

git reset --soft HEAD^git reset --soft HEAD^1的同义词,意味着轻轻地重置为第一个父级。如果它是第二个父亲(第二个父亲!=祖父母,那将是HEAD~2)你想要重置为,请使用git reset --soft HEAD^2。或者你也可以做git reset --soft @{1},这意味着如果合并是你做的最后一件事,那么当前分支的reflog中的第一个条目。

答案 2 :(得分:1)

我认为这不受支持,但您可以通过执行.git/MERGE_HEAD伪造它,然后将您要合并的提交ID写入 import javax.ws.rs.GET;... // This method is called if TEXT_PLAIN is request @GET @Produces(MediaType.TEXT_PLAIN) public String plainTextOutput() {... // This method is called if XML is request @GET @Produces(MediaType.TEXT_XML) ... public String xmlOutput() {...

但是你会丢失提交信息(“将提交'咖啡馆'合并到HEAD中”)。