首页 > 解决方案 > 减少历史 Git 对象

问题描述

我有一个 Bitbucket 存储库,其中存储库大小限制为 2.0 GB。我创建了一个.gitignore但忘记向其中添加下载/文档,因此 repo 变成了 8.3 GB。

看到Bitbucket的通知后,赶紧跑

$ git rm -r /path/to/docs

在执行了通常的git add等命令后,我收到了这个推送错误:

存储库处于只读模式(超过 2 GB 大小限制)。

了解如何减少存储库大小:https ://confluence.atlassian.com/x/xgMvEw 。
致命:无法从远程存储库中读取。

请确保您具有正确的访问权限并且存储库存在。

这导致我使用这些命令:

$ du -sh project-root/

这将返回:

6.0G项目-根

这有点令人担忧,因为我刚刚删除了所有文件,不可能是那么大。所以我跑了:

$ du --max-depth=10 -h project-root | sort -n -r

最突出的目录是:

5.7G    project-root/.git/objects/pack
5.7G    project-root/.git/objects
5.7G    project-root/.git

反过来,我跑了git gc——但这没有效果(或者至少在尺寸方面)。

那么如何减小.git/objects目录的大小呢?我想大小是由大型文档文件夹造成的,但现在它们已经消失了。那么我如何“清理”我的 git 对象呢?

标签: git

解决方案


如果没有推送任何内容,请遵循此答案,该答案建议使用其他git gc标志进行更积极的修剪。

您可以重写存储库历史记录并删除不应提交的大文件。这在使用 Git 减少存储库大小中进行了解释,建议使用BFG Repo-Cleaner

BFG 是 git-filter-branch 的一种更简单、更快的替代方案,用于从 Git 存储库历史记录中清除不良数据:

  • 删除疯狂的大文件
  • 删除密码、凭证和其他私人数据

推荐阅读