Git 推送远程:致命:包超出最大允许大小

Git Push remote: fatal: pack exceeds maximum allowed size

我接到了一个大项目。客户想将其添加到 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'

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

首先,您可以使用 git-sizer 来了解在您当前的本地存储库中什么占用了太多 space(您无法推送)

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

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

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


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

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

参见 commit 0cf5fbc (24 Feb 2022) by Matt Cooper (vtbassmatt)
(由 Junio C Hamano -- gitster -- in commit 283e4e7 合并,2022 年 3 月 6 日)

index-pack: clarify the breached limit

Helped-by: Taylor Blau
Helped-by: Derrick Stolee
Signed-off-by: Matt Cooper

As a small courtesy to users, report what limit was breached.
This is especially useful when a push exceeds a server-defined limit, since the user is unlikely to have configured the limit (their host did).

    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);
    }