357

我试图寻找一个关于减少 repo 大小的好教程,但没有找到。如何减小我的 repo 大小...大约 10 MB,但问题是 Heroku 只允许 50 MB,而且我还没有完成我的应用程序的开发。

我已经将常见的嫌疑人(日志、供应商、文档等)添加到 .gitignore 中。虽然我最近才加了 .gitignore 。

有什么建议么?

4

4 回答 4

419

十一年后的 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 存储库中删除未使用的对象

于 2010-01-22T11:32:18.530 回答
110

感谢您的回复。这是我所做的:

git gc
git gc --aggressive
git prune

这似乎成功了。我从大约 10.5MB 开始,现在只有 980KB 多一点。

于 2010-01-23T02:35:47.773 回答
21

就我而言,我推送了几个大(> 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
于 2020-02-03T09:28:05.817 回答
0

这不应该影响每个人,但是存储库大小较大的半隐藏原因之一可能是 Git 子模块。

您可能已经添加了一个或多个子模块,但有时停止使用它,并且一些文件仍保留在.git/modules目录中。要使多余的子模块文件消失,请参阅此问题

但是,就像主存储库一样,另一种方法是导航到 中的子模块目录.git/modules,然后执行一个,例如git gc --aggressive --prune.

这些应该会对存储库大小产生很好的影响,但是只要您使用 Git 子模块,例如特别是大型库,您的存储库大小就不会发生剧烈变化。

于 2021-02-23T06:42:06.010 回答