【发布时间】:2013-03-14 10:11:51
【问题描述】:
我有一个项目,其中包含约 12MB 的代码和资产。我一直在使用 Git 跟踪它,只是注意到我的 .git 文件夹现在刚刚超过 1.83GB。它由几个小文件组成,然后只有一个包文件,占文件夹的大约 1.82GB。
我运行过git gc --aggressive 和git 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命令以删除您不想跟踪的二进制文件。请注意,这是一个破坏性的过程。
标签: git git-rewrite-history git-gc