减少历史Git对象

时间:2019-06-04 15:18:03

标签: git

我有一个Bitbucket存储库,其中存储库大小限制为2.0 GB。我创建了一个.gitignore,但是忘了向其中添加下载文件/文档,因此该回购文件变成了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对象?

2 个答案:

答案 0 :(得分:2)

如果什么也没推送,请遵循this answer,这建议附加git gc标志以进行更积极的修剪。

您可以重写存储库历史记录并删除不应提交的大文件。 Reducing the repository size using Git中对此进行了解释,建议使用BFG Repo-Cleaner

  

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

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

答案 1 :(得分:-1)

您应该使用git reset --hard,它仅保留已提交的文件,或者使用git clean -d -x -f删除未跟踪的文件,包括目录(-d)和git(-x)忽略的文件。


看一下:

How do I clear my local working directory in git?

git-reset

git-clean


最诚挚的问候,

布拉卡(Brhaka)