Git 存储库太大

Posted

技术标签:

【中文标题】Git 存储库太大【英文标题】:Git Repository Too Large 【发布时间】:2013-03-14 10:11:51 【问题描述】:

我有一个项目,其中包含约 12MB 的代码和资产。我一直在使用 Git 跟踪它,只是注意到我的 .git 文件夹现在刚刚超过 1.83GB。它由几个小文件组成,然后只有一个包文件,占文件夹的大约 1.82GB。

我运行过git gc --aggressivegit gc --prune。它的大小相同。我试过了:

git reflog expire --expire=now --all
git repack -ad  # Remove dangling objects from packfiles
git prune       # Remove dangling loose objects

但它仍然是相同的大小。我什至克隆了它(一次在本地强制重新打包,然后再次从 Git),但每个仍然是 1.83GB。这正常吗?有什么办法可以减小它的大小,还是我只是开始一个新的 repo,复制代码,然后接受我过去的提交将会消失?

【问题讨论】:

“资产”是指图像等不可压缩的东西吗?你编辑了很多吗? This 似乎是你所追求的,但免责声明:我从来没有做过,所以在弄乱它之前克隆你的回购:p 常规 VCS 注释:二进制文件(图像/ZIP...)通常按每个版本的原样存储(与可以通过存储压缩差异非常有效地打包的文本不同)并且无法压缩(因为现在大多数二进制格式已经被压缩了)......所以很可能你有很多版本的二进制文件只占用那么多空间(看看你是否可以收集某种关于数字的每个文件类型的统计信息版本/文件大小) 好吧,二进制文件位似乎是罪魁祸首。除了将它们添加到我的 .gitignore 文件之外,还有什么方法可以从过去的提交中删除这些文件? removing sensitive data 上的 Github 教程也可以应用于您希望删除的其他内容。特别是,您需要修改filter-branch 命令以删除您不想跟踪的二进制文件。请注意,这是一个破坏性的过程。 【参考方案1】:

好的,cmets 是了解问题的根本原因可能是什么的一个很好的开始。不过我不太了解git filter-branch 命令,所以我对使用它有点警惕。

我偶然发现了这个工具:https://rtyley.github.io/bfg-repo-cleaner/

它创造了奇迹。我的仓库现在不到 10MB。

【讨论】:

我是 BFG Repo-Cleaner 的作者,你的回答让我非常非常高兴。 谢谢!说真的,这个工具比从网络上复制和粘贴随机的 git hack 简单得多。 这些天git-filer-repo 是许多github.com/newren/git-filter-repo 的首选

以上是关于Git 存储库太大的主要内容,如果未能解决你的问题,请参考以下文章

Redux + ImmutableJS - 如何垃圾收集太大的存储?

对于未存储的字段,值太大

MYSQL数据太大时怎么优化 视图?存储过程? - 技术问答

数据库分库分表

Adobe Acrobat Pro DC占用存储空间太大,怎么办?

解决draw.io在github云存储下图像太大不能保存的问题