[英]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.