9

到目前为止,我知道有一种很好的方法可以通过使用“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?

4

1 回答 1

14

有可能 - 您还可以使用交互式 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会给您一个很好的机会来查看提交消息,即使您认为您可能不需要使用fixup提交消息的部分内容。)

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

于 2013-03-14T10:03:33.253 回答