即,我有:混帳:如何刪除歷史特定之前提交
root -- c1 -- c2 -- .. - c1000 -- c1001 -- c1002 -- .. -- c2000 -- top
,我想有:
root = c1000 -- c1001 -- c1002 -- .. -- c2000 -- top
如何?
(我想我可以通過git filter-branch
做,但究竟如何?)
(當然,我知道這意味着歷史的重寫......)
即,我有:混帳:如何刪除歷史特定之前提交
root -- c1 -- c2 -- .. - c1000 -- c1001 -- c1002 -- .. -- c2000 -- top
,我想有:
root = c1000 -- c1001 -- c1002 -- .. -- c2000 -- top
如何?
(我想我可以通過git filter-branch
做,但究竟如何?)
(當然,我知道這意味着歷史的重寫......)
最簡單的方法是用一個git移植。如果您編輯文件的.git /信息/移植,就可以把線格式
[ref] [parent1] [parent2] ...
任何提交左側引用,然後彷彿右側列出的父母都是處理的文件中該承諾的父母。所以,你可以插入一行像
c1000
,這將被視爲儘管它有沒有父母。然後可以通過運行git-filter-branch來「通過石頭烘焙」。
我發現下面的有用與不同的根創建新的回購協議(這是我認爲當你說刪除歷史之前提交你問):
git fast-export master~5..master | (cd ../newrepo.git && git init . && git fast-import && git checkout)
(你能做到以上在相同的回購)
偉大的提示!從另一個項目的分支創建一個乾淨的項目非常方便,但沒有git filter-branch的麻煩。 – Claudio
這篇文章很老,但我希望我能得到答案。有沒有辦法在導入時保留Commit ID? –