【问题标题】:How to update/shrink the size of my github repo after running BFG Repo Cleaner运行 BFG Repo Cleaner 后如何更新/缩小我的 github 存储库的大小
【发布时间】:2014-10-17 00:32:15
【问题描述】:

我已经使用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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

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

    仅仅因为你在你的 repo 本地运行了git gcdoesn't mean GitHub have run it 在你的 repo 的他们的副本上,所以他们的 repo 副本在一段时间内会显得更大,即使当您克隆它时,只会发送“基本”信息,因此您会收到所需的较小的 repo。

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

    【讨论】:

    • RobertoTyley 推呢?
    • @little-ancient-forest-kami 我需要更多关于您的问题的背景信息(PussInBoots /was/ 能够成功推送,但他的问题可能会让他看起来不是) .如果您发布新问题,我会很乐意回答。
    • 对不起,也许我误解了这个答案,但这是否为更新 GitHub 上的存储库大小提供了解决方案?
    • 看来,和Bitbucket.org一样。 [...] 推送 2.8GB 文件后,我们进行了 BFG 清理,成功完成了git push,新克隆现在只需要 266MB。但 Bitbucket 仍将其报告为 2.8GB。
    • 完美答案!我在本地将我的 Github 存储库的克隆从 455 Mb 缩小到 54Mb 并将其推送到 Gihub。推完之后,Github 上的那个居然变大了。有一段时间我非常担心我搞砸了我的 Github 存储库。我只是需要睡觉,早上,Github 更新了它的副本,并完成了一个 54Mb 的新克隆。
    【解决方案2】:

    如果可能的话:

    • 重命名您当前的 GitHub 存储库
    • 创建一个具有相同名称的新文件
    • 再次推送到您的空 GitHub 存储库 (git push --mirror)
    • 检查大小警告是否在所述新 GitHub rpeo 中持续存在

    【讨论】:

    • 通过重命名我的仓库(顺便说一句,我不想​​乱用不必要的东西)我不会把事情搞砸吗?
    • @PussInBoots 不,我们的想法是保留原始存储库,以防您不喜欢新存储库。
    • @PussInBoots 当然,您总是可以创建一个新的空仓库,然后推送到该新仓库(无需先重命名另一个),看看大小是否更好。
    【解决方案3】:

    不带--all标志的推送,即做

    git push origin --force
    

    这应该会照顾好它。

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

    • 您可以在 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 应该相同,所以 .git/config[origin] 的原始条目应该保持良好,您只需删除添加的新遥控器。

      git remote rm new_origin
      

    【讨论】:

    • 抱歉忘了提及我已经尝试过该命令并且它给了我:一切都是最新的。如果我查看 github.com 上的 repo 大小,它仍然说 repo 超过 1 GB。所以不幸的是,这个命令也不起作用。
    • @PussInBoots 在这种情况下,是在 github 上创建一个新的 repo 并推送到它,然后将其重命名为一个选项?
    • @PussInBoots 另外,您能否使用收到的完整错误消息更新问题?
    • 您指的是 VonC 指出的同一件事吗?顺便说一句,这是整个错误消息。
    • @PussInBoots 是的,我指的是同一件事,尽管我会首先尝试创建一个新的 repo 并推送到它,如果事情成功,而不是重命名它们(因为如果稍后推送不成功,重命名点)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多