14

我已经使用以下过程使用BFG Repo Cleaner清理了我的 repo :

$ 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

4

3 回答 3

10

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

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

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

您必须下载以重新克隆您的存储库的数据量,以及它在磁盘上占用的空间量,是您真正关心的事情(并且数量几乎相同)。尝试进行新的克隆并查看传输了多少数据以及占用了多少磁盘空间。它应该与您缩小的仓库的大小相匹配。

GitHub 控制台(即https://github.com/settings/repositories或 GitHub API 中)报告的数字对您来说并不重要,这是幸运的,因为它与上面更重要的图,由于使用了Git Alternates,并且git gc仅在 GitHub 服务器上定期发生。

旁注:Bitbucket 也可能需要时间来更新报告的 repo 大小。

仅仅因为你git gc在你的 repo 上本地运行,并不意味着 GitHub 已经在你的 repo 副本上运行它,所以他们的 repo 副本在一段时间内会显得更大,即使当你克隆它时,只有 '发送基本信息,因此您会收到所需的较小的存储库。

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

于 2014-08-23T22:33:37.340 回答
0

Push without the --allflag,即做

git push origin --force

那应该照顾它。

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

  • 你可以在 github 上创建一个新的 repo,
  • 推动它

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

    git remote rm new_origin
    
于 2014-08-23T06:35:46.210 回答
0

如果有可能:

  • 重命名您当前的 GitHub 存储库
  • 新建一个同名的
  • 再次推送到您的空 GitHub 存储库 ( git push --mirror)
  • 检查大小警告是否在所述新 GitHub rpeo 中持续存在
于 2014-08-23T06:42:25.687 回答