2013-06-13 68 views
0

我有一個包含多個組件的git存儲庫,每個組件都位於其自己的目錄中。我現在想把每個組件放在它自己的git倉庫中。這裏的要求是,git歷史不會丟失,所以git blame仍然有效。我正在尋找一種方法來做到這一點,並沒有不相關的git歷史。這有兩個原因:我不希望回購歷史記錄雜亂無章,對代碼的更改不是組成部分的一部分,我喜歡歷史上的提交計數和其他事情是相當準確的。將目錄移動到另一個git存儲庫,同時保留相關歷史記錄

我已經看過this helpful post這是正確的方向。但是它並沒有完全刪除無意義的提交(所以現在在歷史中有很多空的提交)。它也不會保留過去從某個其他組件移動的文件的歷史記錄,也不會保留歷史記錄,即使它們在提交時也觸及了也會觸及被忽略組件的文件。

有沒有更好的方法來做到這一點?

+2

認識到有準確的歷史和有清晰的歷史是矛盾的要求。決定哪個要求更重要,犧牲另一個。 –

回答

1

git filter-branch有一個專門的模式,用於將存儲庫減少到子目錄。檢查選項--subdirectory-filter。它應該自動清除不相關的提交,並將子目錄的內容移動到回購的頂層。

但是,它不跟蹤/遵循文件重命名。如果你想要的話,你正在看很多手動工作。畢竟,您必須在舊位置中包含對文件所做的更改,而且還要重寫重命名後位置的路徑。我們沒有任何附帶git的東西可以做到這一點。

相關問題