Git rebase:结合非后续提交

时间:2013-03-14 09:59:37

标签: git git-rebase

到目前为止,我知道如何通过使用'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?

1 个答案:

答案 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}的消息。提交。)

如果您的fixupcommitB更改了文件的相同部分,则可能会发生rebase冲突。通常可以很容易地整理出来。