使用 SVN 可以很容易地对提交进行反向合并,但是如何使用 Git 进行反向合并呢?
如果我没理解错的话,你说的是
svn merge -rn:n-1
退出之前的提交,在这种情况下,您可能正在寻找
git revert
要创建一个新的提交来“撤销”过去提交的更改,请使用:
$ git revert <commit-hash>
也有可能通过重新定基然后重新设置从过去的任意点删除提交,但是如果您已经将提交推送到另一个存储库(或者其他人已经从您那里提取了提交) ,那么您真的不想这样做。
如果您以前的提交是合并提交,则可以运行此命令
$ git revert -m 1 <commit-hash>
有关重新合并未合并的分支的正确方法,请参见 Schacon.github.io/git/howto/revert-a-faulty-merge.txt
要恢复 合并提交,您需要使用: git revert -m <parent number>。例如,要使用数字为1的父类恢复最近的合并提交,应该使用:
git revert -m <parent number>
git revert -m 1 HEAD
要在最后一次提交之前恢复合并提交,您需要:
git revert -m 1 HEAD^
使用 git show <merge commit SHA1>查看父母,编号是他们出现的顺序,例如 Merge: e4c54b3 4725ad2
git show <merge commit SHA1>
Merge: e4c54b3 4725ad2
Git 合并文档: Http://schacon.github.com/git/git-merge.html
Git 合并讨论(令人困惑但非常详细) : Http://schacon.github.com/git/howto/revert-a-faulty-merge.txt
git reset --hard HEAD^
使用上面的命令恢复合并更改。
如果你不想提交,或者想以后再提交(提交消息仍然会为你准备,你也可以编辑它) :
git revert -n <commit>
Git Revt-m hash M 代表静脉注射。 合并有两个父母。 如果将分支 A 合并到分支 B,则 B 为父1,而 A 为父2。 基本上,您指定,我想恢复提交 hash,它基于父 B 进行更改,然后您说 $git Revt-m 1 hash.
hash
如果您是 git log,您将看到合并提交为
git log
commit <hash> Merge: <parent 1> <parent 2> Author: Author <author@email.com> Date: Mon Oct 24 21:54:00 2022 +0000 comment message
检查日志中的 < father 1 > 和 < father 2 > ,就会知道要将这个提交恢复到哪个父/基。