如何作为单个提交的一部分恢复多个提交

这不是一个大问题,只是我想知道是否可能。

比方说,我们有两个提交, abcd123wxyz789 ,发生在不相邻的,独立的地方,远在回购的历史。 现在让我们说,我们要恢复他们。 干

 git revert abcd123 wxyz789 

会导致两个单独的提交,一个恢复abcd123和另一个恢复wxyz789

这一切都很好,但是如果我们想要在两个提交中修复的错误在逻辑上是相互关联的,并且为了自我logging的目的,我们希望做一个包含一个提交的单个提交“ 现在我破坏了一些东西我正在恢复文件x,y和z “评论? 有没有这样做的git命令?

(我当然知道可以创build一个提交,我只是手动修改所有的变化,然后推动,这是所有有害的原因,这是痛苦的。

你可以做:

 git revert abcd123 git revert --no-commit wxyz789 git commit --amend 

…然后编写一个适当的提交消息,描述恢复两个提交的组合效果。

在复杂的情况下,相互之间可能会发生变化,但是revert --no-commit可能是有问题的。

我简单的解决scheme是做真正的恢复和南瓜:

 git revert <all commits> git rebase -i 

然后将所有的回复标记为squash ,除了第一个之外,创build一个提交。

 git revert -n <commits> git commit 

第一个命令将执行所有的回复而不创build任何提交,并执行最后的结果(-n选项)。 之后,commit命令将创build一个提交。