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

时间:2014-08-23 06:30:23

标签: git github git-rewrite-history bfg-repo-cleaner

我使用以下BFG Repo Cleaner

使用procedure清理了我的仓库
$ 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

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

git push无效,我也尝试了git push origin --force --all,它给了我这样的错误消息:error: --all and --mirror are incompatible

3 个答案:

答案 0 :(得分:5)

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

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

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

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

GitHub控制台(即https://github.com/settings/repositories或GitHub API)中报告的数字对你来说并不重要,这是幸运的,因为它与更重要的人物享有解放和有点醉酒的关系上面,由于使用Git Alternatesgit gc仅在GitHub服务器上定期发生。

旁注:Bitbucket还可以take time更新报告的回购协议大小。

只是因为你在你的回购邮件上本地运行了git gc,而在他们的你的回购邮件的副本上doesn't mean GitHub have run it,所以他们的回购副本会显得更大虽然当你克隆它时,只发送'必要'信息,所以你会收到你想要的小型回购。

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

答案 1 :(得分:0)

不使用--all标志推送,即执行

git push origin --force

这应该照顾它。

编辑:即兴发表评论

  • 您可以在github上创建一个新的仓库,
  • 推送它

    cd repo_directory
    git remote add new_origin url/to/new/repo
    git push new_origin --mirror
    
  • 如果事情成功(没有错误)
    • 将github repos重命名(原始名称为虚拟名称,新名称为原始名称)
  • 删除远程new_origin。由于重命名内容后github repo url应该相同,[origin].git/config的原始条目应保持良好状态,您只需删除添加的新远程。

    git remote rm new_origin
    

答案 2 :(得分:0)

如果可能:

  • 重命名您当前的GitHub回购
  • 创建一个名称相同的新
  • 再次推送到空的GitHub仓库(git push --mirror
  • 检查所述新GitHub rpeo中是否仍存在大小警告