到现在为止,我知道如何通过使用'git rebase --interactive'来组合提交和更改提交消息的方法很好
有以下情况:
$ git rebase --interactive HEAD^^^^
pick 5b7c140 commitA
pick 40ffd7c commitB
pick 5e7647d commitC
pick 78bea2d commitD
Rebase [...]
Run Code Online (Sandbox Code Playgroud)
是否有可能处理以下要求:
将commitA和commitC以及commitB和commitD组合到新提交cAC和cBD中?
Foo*_*ooF 13
这是可能的 - 您还可以使用交互式rebase重新排列提交的顺序:
pick 5b7c140 commitA
squash 5e7647d commitC
pick 40ffd7c commitB
squash 78bea2d commitD
Run Code Online (Sandbox Code Playgroud)
要么
pick 5b7c140 commitA
fixup 5e7647d commitC
pick 40ffd7c commitB
fixup 78bea2d commitD
Run Code Online (Sandbox Code Playgroud)
两者之间的区别在于,squash允许您编辑新提交的提交消息,而fixup只是抛弃第二个pick提交消息,为组合提交留下前面的提交消息.(如果您的编辑器启动速度足够快,那么squash即使您认为可能不需要使用fixup提交消息的某些部分,那么只要选择的习惯就会给您一个很好的机会来查看提交消息.)
还有底垫发生冲突的可能性,如果你commitB和commitC更改文件的同一部分.通常这些可以很容易地整理出来.