Git:如何反向合并提交?

用SVN很容易反向合并一个提交,但如何用Git做到这一点?

要创build一个新的提交,“解除”过去提交的更改,请使用:

$ git revert <commit> 

也可以通过重新绑定然后重新设置从一个任意点删除提交,但如果您已经将提交推送到另一个存储库(或者其他人已经从您提交),那么您确实不希望这样做, 。

要恢复合并提交,你需要使用:git revert -m。 因此,例如,要使用编号为1的父级恢复最近的最多合并提交,可以使用:
git revert -m 1 HEAD

要在最后一次提交之前还原合并提交,您应该这样做:
git revert -m 1 HEAD^

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

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

混帐合并讨论(混乱,但非常详细): http : //schacon.github.com/git/howto/revert-a-faulty-merge.txt

如果我正确地理解你,你正在谈论做一个

 svn merge -rn:n-1 

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

 git revert 

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

 git revert -n <commit> 
 git reset --hard HEAD^ 

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