是的,你可以完全摧毀歷史上的dev
和it
分支。它可能不會更改存儲庫大小,並且不能解決核心問題:您的回購臃腫。有很多方法可以減少存儲庫的大小。
除非你的其他分支從主分支似地分歧,就像他們存儲完全不同和大型內容,而且從來沒有合併到主,從歷史中刪除不會讓存儲庫大小太大的區別。這是因爲Git歷史都是建立在彼此之上的。
一個Git倉庫的歷史看起來是這樣的:
J - K - L T - U [dev]
/ \ /
A - B - C - H - I - M - N - O - Q - R - S - V [master]
\ / \
---------D - E - F - P X - Y [it]
分支是字面上的分支。當分支合併時,即使在分支被刪除之後分支的歷史仍然存在。新的分支機構共享以前的所有歷史。所以master
依賴於它之前的每個提交。那麼dev
和it
。銷燬歷史記錄只會爲您節省t
和u
,因爲master
需要所有歷史記錄的其餘部分。
相反,你需要把你的回購飲食。
如果您的存儲庫是7.5演出其可能充滿大型文件:視頻,圖像,音頻,辦公文檔,大型壓縮文件等... Git很難與大型二進制文件,包括壓縮文件,因爲它不能存儲差異。每次他們改變它都必須存儲一個全新的副本。這可能會迅速膨脹存儲庫大小。
幸運的是,有一個解決方案,git-lfs
提供「大型文件存儲」。這使您可以透明地將大文件的內容存儲在雲中,但仍可以跟蹤其在Git中的更改,並防止您的存儲庫臃腫。你可以使用它來存儲你想存儲的任何新的大文件,但是那些已經存儲的文件又如何呢?
BFG Repo-Cleaner允許您重寫您的存儲庫以執行諸如從歷史記錄中刪除文件,or change them to use git-lfs。
所以你想運行BFG與--convert-to-git-lfs
選項。你必須弄清楚你的回購中的哪些文件很大,並告訴BFG過濾它們。
你不能「保留歷史記錄,也刪除它」。爲了讓git瞭解歷史,它必須記錄發生的事情。您是否將大型二進制文件保存在存儲庫中?在這種情況下,git會存儲每個版本文件的完整副本。運行'git gc'會減小大小嗎? – Atsch