Git推送远程时出现错误:致命错误:包超出最大允许大小。

8

我收到了一个大项目。客户希望将其添加到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 Code和Git Bash上传文件。

1个回答

11
首先,您可以使用git-sizer了解当前本地仓库(无法推送)中哪些内容占用了过多的空间。
如果是因为某个提交太大,您可以: - git reset @~取消该提交 - 分成几个较小的提交 - 尝试再次推送
如果是因为某个文件太大,您可以尝试激活Git LFS, 但其受配额限制,超出部分可能需要付费。
更普遍地,"大型项目"可能需要拆分为多个Git仓库。
请注意,从Git 2.36(2022年第二季度)开始,当“index-pack”由于传入数据超过最大允许输入大小而停止时,它将在错误消息中包含限制值。
如果远程服务器使用Git 2.36+,您将能够更有效地拆分提交。
请参见commit 0cf5fbc(2022年2月24日),作者为Matt Cooper(vtbassmatt(由Junio C Hamano -- gitster --合并于commit 283e4e7,2022年3月6日)

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

嗨。如果项目有几个文件夹,我应该为每个文件夹创建一个仓库吗? - d7l2k4
2
@d7l2k4 git-sizer只是一个可执行文件,您可以从发布页面下载:https://github.com/github/git-sizer#getting-started - VonC
1
@d7l2k4 每个文件夹都建立一个仓库并不是必要的,除非每个文件夹都非常庞大且相互独立。如果这些文件夹属于同一项目,则应该将它们作为同一个 Git 仓库的一部分。如果这些文件夹代表项目的“不同”部分(例如前端与后端),那么出于大小和管理原因,您可以考虑将它们拆分为自己独立的仓库。 - VonC
2
如果您不介意重置几个提交(请确保首先备份以防结果不令人满意),那么reset --hard是回到以前状态的好方法:https://dev59.com/WXA65IYBdhLWcg3wxRs8#3639154。其他选项:https://dev59.com/im855IYBdhLWcg3w1oLa#4114122。 - VonC
让我们在聊天中继续这个讨论 - d7l2k4
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接