2013-03-14 18 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