如何在运行BFG Repo Cleaner后更新/缩小我的github仓库的大小

Pus*_*ots 12 git github git-rewrite-history bfg-repo-cleaner

我使用以下程序BFG Repo Cleaner清理了我的回购:

$ git clone --mirror git://example.com/some-big-repo.git
$ java -jar bfg.jar --strip-biggest-blobs 500 some-big-repo.git
$ cd some-big-repo.git
$ git reflog expire --expire=now --all
$ git gc --prune=now --aggressive
$ git push
Run Code Online (Sandbox Code Playgroud)

我可以看到我的本地仓库收缩了1GB.大.我现在遇到的问题是我现在无法找到任何信息,现在我也希望缩小GitHub-repo的大小.怎么做到这一点?

git push没有工作,我也试过git push origin --force --all,这给了我这个错误信息:error: --all and --mirror are incompatible

Rob*_*ley 7

我的建议:不要过于担心GitHub报告的回购规模.由于各种原因,它不能准确反映回购的"真实"尺寸.

真正关心的是这个问题的答案:

如果我从GitHub中重新编译它,我的磁盘上的这个repo有多大?

您必须下载的数据量才能完全复制您的回购,以及磁盘占用的空间量,这些都是您真正关心的事情(以及几乎相同的数量).尝试进行全新的克隆,查看传输的数据量以及磁盘占用的空间.它应该与你缩小的回购的大小相匹配.

在GitHub控制台(即https://github.com/settings/repositories或GitHub API)中报告的数字对你来说并不重要,幸运的是,因为它与之有着解放的,有些醉酒的关系.上面更重要的数字,由于使用Git Alternates,并且git gc只在GitHub服务器上定期发生.

旁注:Bitbucket也需要时间来更新报告的回购大小.

仅仅因为你跑git gc你的本地回购,并不意味着GitHub上已经运行自己的回购协议的副本着呢,所以他们你的回购的副本将出现一会更大,甚至当你复制它虽然,只有"必要的'信息被发送,所以你收到你想要的小型回购.

完全披露:我是BFG Repo-Cleaner的作者.


mu *_*u 無 0

不带flag的push --all,即do

git push origin --force
Run Code Online (Sandbox Code Playgroud)

这应该能解决它。

编辑:根据评论中的讨论即兴创作

  • 您可以在 github 上创建一个新的存储库,
  • 推动它

    cd repo_directory
    git remote add new_origin url/to/new/repo
    git push new_origin --mirror
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果一切顺利(没有错误)
    • 重命名 github 存储库(原始名称为虚拟名称,新名称为原始名称)
  • 放下遥控器new_origin。由于重命名内容后 github 存储库 url 应该是相同的,因此[origin]in的原始条目.git/config应该保持不变,您只需要删除添加的新远程即可。

    git remote rm new_origin
    
    Run Code Online (Sandbox Code Playgroud)