无法推送到GitHub错误:pack-objects因信号13而中止

19

我试图将本地文件夹推送到GitHub上的远程仓库,但遇到了问题。

在推送到96%左右时出现以下情况...

Counting objects: 4145, done.
Delta compression using up to 2 threads.
Connection to github.com closed by remote host.
fatal: The remote end hung up unexpectedly
Compressing objects:  98% (3919/3969)   

然后在最后2%完成之后,它显示了这个错误...

Compressing objects: 100% (3963/3963), done.
error: pack-objects died of signal 13
error: failed to push some refs to 'git@github.com:example/example.git' 

不确定那是什么意思。


"git prune" 对我有用。 - Prasanth Pennepalli
6个回答

14
这可能是由于新的GitHub文件大小限制,或者可能是由于数据过大(例如2011年的另一个SO问题中所述的另一种推送大型repo的初始方法)而导致打包进程崩溃,甚至在报告特定限制之前。几周前,在同事的Mac OS X机器上,我在推送时看到了类似的不透明错误消息(只有通过HTTPS - SSH才会给出正确的错误消息)。然而,我现在尝试在自己的Mac上将大文件推送到GitHub时,无论是连接协议都得到了预期的信息性错误消息(“remote:error:File big is 976.56 MB; 这超出了GitHub的100 MB文件大小限制”)。可能是我的同事安装了旧版本的Git,无法正确报告错误。如果您决定需要从Git历史记录中删除大文件(因为这是将它们推送到GitHub的唯一方式),我可以推荐The BFG
$ java -jar bfg.jar  --strip-blobs-bigger-than 50M  my-repo.git

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


经过更多的调查,这绝对与文件大小有关。这很奇怪,因为GitHub声称您将获得大文件的正确错误消息。https://help.github.com/articles/working-with-large-files - Dan

10

简单的解决方案是增加HTTP post缓冲区大小,以允许更大的块被推送到远程仓库。要做到这一点,只需输入:

git config http.postBuffer 52428800

这个数字是以字节为单位的,所以在这种情况下我将其设置为50MB。默认值为1MB。


3
这个修复只适用于通过http(s)连接到git/GitHub的情况。原作者是通过ssh进行访问的。 - javabrett
2
完成这个操作后,我能够使用SSH连接将大量提交(61k个对象)推送到Github。 - Daniel Reis
我已将我的远程URL从SSH更改为HTTPS -- 为了看到git config http.postBuffer 52428800的效果 -- 并且它起作用了! 要更改您的远程URL,请执行以下操作:git remote set-url my-upstream-remote https://github.com/OWNER/REPOSITORY.git - Raphael Setin

3
如果您无法启动该进程,可能是因为主服务器存储库的权限不正确。我刚刚遇到了这个问题,我的主存储库的权限是root.root,所以我的用户git无法在那里写入数据。
在尝试推送之前,请检查主存储库的权限。

没错!我也因为这个原因得到了这个错误。当然,我们应该确保(可能是)新的仓库文件夹归git所有,并且如果不是,则运行“sudo chown -R <repo文件夹名称>”。 - Marcin

0

0

我有一个类似的问题。我正在将巨大的数据集(8.2、2.3、3.5 GB作为zip文件)添加到存储库中。我所要做的就是逐个推送这些文件,而不是一次性推送所有15GB。

enter image description here


0
我在Bitbucket上遇到了一个问题,折腾了好几个小时。我的解决办法是通过SSH进入服务器,并在那里使用git克隆项目。

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