簡體   English   中英

減少 git 存儲庫大小

[英]Reduce git repository size

我試圖尋找一個關於減少 repo 大小的好教程,但沒有找到。 如何減小我的 repo 大小...大約 10 MB,但問題是 Heroku 只允許 50 MB,而且我還沒有完成我的應用程序的開發。

我已經將常見的嫌疑人(日志、供應商、文檔等)添加到 .gitignore 中。 雖然我最近才加了 .gitignore 。

有什么建議么?

十一年后的 2021 年 2 月更新:新的git maintenance命令手冊頁)應該取代git gc ,並且可以安排


原文: git gc --aggressive是強制進行修剪過程的一種方法(可以肯定的是: git gc --aggressive --prune=now )。 你也有其他命令來清理 repo。 不過不要忘記,有時單獨git gc可以增加 repo 的大小

它也可以在filter-branch之后使用,以標記一些要從歷史記錄中刪除的目錄(進一步增加空間); 這里 但這意味着沒有人會從您的公共回購中撤出。 filter-branch可以將備份 refs 保存在.git/refs/original中,因此也可以清理該目錄。

最后,如本評論本問題所述; 清理 reflog 可以幫助:

git reflog expire --all --expire=now
git gc --prune=now --aggressive

一個更完整但可能更危險的解決方案是從 git 存儲庫中刪除未使用的對象

感謝您的回復。 這是我所做的:

git gc
git gc --aggressive
git prune

這似乎成功了。 我從大約 10.5MB 開始,現在只有 980KB 多一點。

就我而言,我推送了幾個大(> 100Mb)文件,然后繼續刪除它們。 但是它們仍然在我的回購的歷史中,所以我也不得不將它們從中刪除。

訣竅是:

bfg -b 100M  # To remove all blobs from history, whose size is superior to 100Mb
git reflog expire --expire=now --all
git gc --prune=now --aggressive

然后,您需要對分支施加壓力:

git push origin <your_branch_name> --force

注意bfg是一個可以使用 brew 安裝在 Linux 和 macOS 上的工具:

brew install bfg

這不應該影響每個人,但是存儲庫大小較大的半隱藏原因之一可能是 Git 子模塊。

您可能已經添加了一個或多個子模塊,但在某個時候停止使用它,並且一些文件保留在.git/modules目錄中。 要放棄冗余子模塊文件,請參閱此問題

但是,就像主存儲庫一樣,另一種方法是導航到.git/modules中的子模塊目錄,然后執行例如git gc --aggressive --prune

這些應該對存儲庫大小有很好的影響,但是只要您使用 Git 子模塊,例如特別是對於大型庫,您的存儲庫大小就不會發生劇烈變化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM