2013-03-14 56 views
7

,我知道有一个很好的办法如何使用“git的变基--interactive”Git的变基:现在结合非后续提交

具有下列情况提交合并和修改提交信息:

$ git rebase --interactive HEAD^^^^ 
pick 5b7c140 commitA 
pick 40ffd7c commitB 
pick 5e7647d commitC 
pick 78bea2d commitD 

Rebase [...] 

有也处理以下要求的可能性:

commitA和commitC和commitB和commitD结合到新的提交CAC和生物多样性公约?

回答

12

这是可能的 - 你也可以重新与互动底垫的托提交的顺序:

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提交的部分消息,也可以查看提交消息。)

如果您的commitBcommitC更改了文件的相同部分,则存在rebase冲突的可能性。通常这些可以很容易地被整理出来。

+1

就我而言:没有关于这些提交的冲突文件。 Git非常棒,我认为我必须遵守提交顺序。非常感谢! :) – 2013-03-14 10:08:13

+1

@John - 'git rebase -i'是非常强大的工具! – FooF 2013-03-14 10:09:30