到目前为止,我知道如何通过使用'git rebase --interactive'来组合提交和更改提交消息有一个很好的方法
遇到以下情况:
$ git rebase --interactive HEAD^^^^
pick 5b7c140 commitA
pick 40ffd7c commitB
pick 5e7647d commitC
pick 78bea2d commitD
Rebase [...]
是否有可能处理以下要求:
将commitA和commitC以及commitB和commitD组合到新提交cAC和cBD?
答案 0 :(得分:13)
有可能 - 您还可以使用交互式rebase重新排列提交的顺序:
pick 5b7c140 commitA
squash 5e7647d commitC
pick 40ffd7c commitB
squash 78bea2d commitD
或
pick 5b7c140 commitA
fixup 5e7647d commitC
pick 40ffd7c commitB
fixup 78bea2d commitD
两者之间的区别在于squash
允许您编辑新提交的提交消息,而fixup
只是抛弃第二个提交消息,留下前面的pick
提交消息适用于组合提交。 (如果你的编辑器发布得足够快,那么只要选择squash
就习惯于给你一个很好的机会来审查提交信息,即使你认为你可能不需要使用部分{{1}的消息。提交。)
如果您的fixup
和commitB
更改了文件的相同部分,则可能会发生rebase冲突。通常可以很容易地整理出来。