2010-06-11 66 views
2

我的公司正在將CVS轉換爲git。我們已經在CVS很長一段時間,所以有很大的歷史。手工操作太多。大規模的git commit squashing

看着日誌,可以做很多擠壓。很多。我想要做的是鉤住一個腳本,它將比較兩個相鄰的提交。如果它返回true,則連接提交消息並壓縮提交。我也很樂意接受兩個提交和一個提交消息的命令,然後將它們壓縮在一起。

git rebase --interactive與我需要的接近,但「squash」需要太多的手動干預。我也看過使用「fixup」而不是squash,但我不想丟失提交消息。

任何想法?

回答

2

怎麼樣--autosquash?

你可以將它與git filter-branch結合爲重命名提交的腳本。 (一個警告的話,小心過濾器分支,並閱讀其手冊頁中的警告,這不是一個暗淡心靈的命令。)

+0

我可能是錯的,但那仍然不能解決「消息連接」問題。 Autosquash看起來與squash/fixup相同,但是基於提交消息。 – Nycto 2010-06-11 22:23:42

+0

實際上,你可能只需要使用filter-branch,完全忘記了rebase --autosquash。 – dublev 2010-06-11 22:32:25

+0

你對過濾器分支的建議證明是正確的。使用「commit-filter」標誌允許您處理整個回購中的每個提交。在您傳入的回調腳本中,您可以將消息傳遞給commit-tree命令以更改提交消息。您也可以調用skip_commit將當前提交合併到以下提交中。 – Nycto 2010-06-28 15:59:21