git - 减少历史 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 gc
标志进行更积极的修剪。
您可以重写存储库历史记录并删除不应提交的大文件。这在使用 Git 减少存储库大小中进行了解释,建议使用BFG Repo-Cleaner:
BFG 是 git-filter-branch 的一种更简单、更快的替代方案,用于从 Git 存储库历史记录中清除不良数据:
- 删除疯狂的大文件
- 删除密码、凭证和其他私人数据
推荐阅读
- excel - VBA:运行时错误 1004 调试 - 将天气数据从 API 提取到 Excel 工作表中
- javascript - 如何获取Javascript中对象中存在的值的计数
- python - pygame sprite 与背景元素的碰撞
- reactjs - ReactJS onClick setState 在子组件中不起作用
- java - 找不到 .findNavController() 的正确上下文
- django - 如何将 request.user / user 传递给 Django 中的消息
- reactjs - 本地存储与 redux 状态
- oracle - 如何从过程中运行 UTL_RECOMP.RECOMP_PARALLEL?
- php - Mysql php - 如何保存没有空格和特殊字符的文件
- python - 使用 Tkinter 创建重复行