繁体   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