Git Push 远程:致命:包超出允许的最大大小

d7l*_*2k4 8 git github github-for-windows

我接到了一个大项目。客户想将其添加到github。

我是一点一点添加的。然后发生的事情是我太贪心了,一次添加了太多文件。现在,无论我尝试什么,我都会不断收到此错误。我怎样才能解决这个问题?我试图回滚,但也许我做错了。

$ git push
Enter passphrase for key '/c/Users/guestaccount/.ssh/id_rsa':
Enumerating objects: 35931, done.
Counting objects: 100% (35931/35931), done.
Delta compression using up to 12 threads
Compressing objects: 100% (35856/35856), done.
remote: fatal: pack exceeds maximum allowed size
fatal: sha1 file '<stdout>' write error: Broken pipe
error: remote unpack failed: index-pack abnormal exit
To github.com:(mygithubid)/(repo).git
 ! [remote rejected]   main -> main (failed)
error: failed to push some refs to 'github.com:(mygithubid)/(repo).git'
Run Code Online (Sandbox Code Playgroud)

我正在使用 Visual Studio Code 和 git bash 上传。

Von*_*onC 11

首先,您可以使用git-sizer来了解当前本地存储库中哪些内容占用了太多空间(您无法推送)

  • 如果是因为提交太大,您可以:

    • git reset @~取消该提交
    • 重做几个较小的提交
    • 尝试再推一次
  • 如果是因为文件太大,您可以尝试激活Git LFS,但这受到配额限制,并且上面可能包含非免费服务。

更一般地说,一个“大型项目”可能需要分成多个 Git 存储库。


请注意,在 Git 2.36(2022 年第 2 季度)中,当“ index-pack”由于传入数据超过允许的最大输入大小而死亡时,它将在错误消息中包含限制值

了解远程限制后,您将能够更有效地拆分提交。(假设远程服务器确实使用Git 2.36+)

请参阅Matt Cooper ( )的提交 0cf5fbc(2022 年 2 月 24 日)。(由Junio C Hamano 合并 -- --提交283e4e7,2022年 3 月 6 日)vtbassmatt
gitster

index-pack:澄清违反的限制

帮助者:Taylor Blau
帮助者:Derrick Stolee
签名者:Matt Cooper

作为对用户的一个小礼貌,请报告违反了哪些限制。
当推送超过服务器定义的限制时,这特别有用,因为用户不太可能配置该限制(他们的主机已配置)。

    if (max_input_size && consumed_bytes > max_input_size) {
        struct strbuf size_limit = STRBUF_INIT;
        strbuf_humanise_bytes(&size_limit, max_input_size);
        die(_("pack exceeds maximum allowed size (%s)"),
            size_limit.buf);
    }
Run Code Online (Sandbox Code Playgroud)

  • @d7l2k4 git-sizer 只是一个可执行文件,您可以从发布页面下载:https://github.com/github/git-sizer#getting-started (2认同)
  • @d7l2k4如果您不介意重置一些提交(请确保先进行备份,以防结果不令人满意),重置 --hard 是恢复到之前状态的好方法:https:// /stackoverflow.com/a/3639154/6309。其他选项:/sf/answers/287988571/ (2认同)