我解决了一些冲突并提交了合并。是否可以准确恢复运行git commit
之前的合并状态,而不是更改索引或工作树?对于常规单父提交,执行此操作的命令为git reset --soft HEAD^
,但对于合并提交,它不会按预期工作,因为没有单个父级要重置为。
答案 0 :(得分:2)
你有commit-sha for your merge state
。通过git log
或git 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中”)。