2010-12-07 101 views
3

我有一個很大的舊的git倉庫,在本地的Redmine服務器上託管着大量的二進制文件。我想在某個日期(6個月或12個月前)之前壓縮所有評論,以節省一些與我的回購的大小相關的內容。壁球git歷史

有沒有辦法做到這一點?

回答

3

每次更改任何歷史記錄時,更改後的所有提交都將有新的SHA1總和。如果只是使用repo或一組可以輕鬆通信的人員,那麼您可以安全地擠壓或過濾(請參閱下文)以清理歷史記錄,然後在取回時需要手動重置他們所有的分支都會前往新的負責人。如果這是而不是的情況,那麼你將不得不忍受它,不幸的是。一旦發佈歷史記錄,它不會被改變。

現在,您可以使用git rebase移除提交。這是緩慢和痛苦的,但它可以工作。你也可以使用git filter-branch刪除所有的二進制文件。我必須自己做一個回購,這很容易。如果所有的二進制文件都在一個目錄中,那麼你可以使用git filter-branch的--subdirectory標誌(當然,請閱讀幫助頁面),從給定範圍內的所有提交中的子目錄中刪除所有內容。如果它們是分散的,那麼你可以給git filter-branch一個shell命令行,或者一個shell腳本來執行每一次提交,並且該腳本可以通過並清除二進制文件以及任何你想要移除或改變的其他文件。再次請參閱幫助頁面。但我認爲git filter-branch絕對是這種情況下的一種方式。