如何作为单个提交的一部分恢复多个提交
这不是一个大问题,只是我想知道是否可能。
比方说,我们有两个提交, abcd123
和wxyz789
,发生在不相邻的,独立的地方,远在回购的历史。 现在让我们说,我们要恢复他们。 干
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一个提交。