Git存储库太大

Git存储库太大,git,git-rewrite-history,git-gc,Git,Git Rewrite History,Git Gc,我有一个项目,其中有价值约1200亿的代码和资产。我一直在使用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

我有一个项目,其中有价值约1200亿的代码和资产。我一直在使用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。这正常吗?有没有办法缩小它的规模,或者我只是开始一个新的回购,复制代码,并接受我过去的提交将消失?

好的,这些评论是了解问题的根本原因的一个很好的开始。不过,我并不真正理解git filter branch的

我发现了这个工具:


它创造了奇迹。我的回购现在不到10MB。

所说的“资产”是指图像等不可压缩的东西吗?你经常编辑这些吗?似乎是你想要的,但免责声明:我从来没有这样做过,所以在弄乱它之前克隆你的repo:p通用VCS注释:二进制文件(图像/ZIP…)通常按每个版本的原样存储(不同于通过存储压缩的差异可以非常有效地打包的文本),并且无法压缩(因为现在大多数二进制格式都已经被压缩了)…所以很可能你有很多版本的二进制文件,只是占用了那么多的空间(看看你是否可以收集一些关于版本数/文件大小的每种文件类型的统计信息)好的,二进制文件位似乎是罪魁祸首。除了将这些文件添加到my.gitignore文件中之外,还有什么方法可以从过去的提交中删除这些文件?Github教程也可以应用于您希望删除的其他内容。特别是,您需要修改
过滤器分支
命令来删除二进制文件你不希望跟踪。请注意,这是一个破坏性的过程。我是BFG Repo Cleaner的作者,你的回答让我非常高兴。谢谢!说真的,这个工具比从网上复制和粘贴随机的git黑客要简单得多。现在,
git filer Repo
是许多人的首选