Git:如何反向合并提交?

时间:2009-11-27 15:54:08

标签: git merge

使用SVN很容易反向合并提交,但如何使用Git?

5 个答案:

答案 0 :(得分:108)

要还原合并提交,您需要使用:git revert -m <parent number>。因此,例如,要使用编号为1的父级恢复最近的大多数合并提交,您将使用:

git revert -m 1 HEAD

要在上次提交之前恢复合并提交,您可以执行以下操作:

git revert -m 1 HEAD^

使用git show <merge commit SHA1>查看父母,编号是他们出现的顺序,例如Merge: e4c54b3 4725ad2

git merge文档: http://schacon.github.com/git/git-merge.html

git merge讨论(令人困惑但非常详细): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt

答案 1 :(得分:103)

要创建一个“撤消”过去提交更改的新提交,请使用:

$ git revert <commit>

通过重新定位然后重置,实际上也可以从过去的任意点删除提交,但是如果你已经将提交推送到另一个存储库(或其他人已经提取),你真的不想这样做来自你)。

答案 2 :(得分:4)

如果我理解正确,你就是在谈论做

svn merge -rn:n-1

退出之前的提交,在这种情况下,您可能正在寻找

git revert

答案 3 :(得分:0)

git reset --hard HEAD^ 

使用以上命令还原合并更改。

答案 4 :(得分:-1)

如果您不想提交,或者想稍后提交(仍然可以为您准备提交消息,您也可以编辑):

git revert -n <commit>