git push to github失败,出现“错误:pack-objects死于信号967”

时间:2017-07-30 07:44:27

标签: git github

我解雇了这个命令:

git push origin master

我得到了这个结果:

Counting objects: 15626, done.
Delta compression using up to 4 threads.
error: pack-objects died of signal 967
error: pack-objects died with strange error

1 个答案:

答案 0 :(得分:1)

没有信号编号967,但信号编号9,在Linux和Unix系统上为SIGKILL。我认为有些东西打印出以67结尾的行,然后是回车符,然后你的本地git pack-objects被" OOM杀手"击中。

您需要做的是给您的Linux系统(这是您的系统,而不是您要推送的系统)更多内存,或推送较小的提交(或两者)。 "存储"在这种情况下,可以是真实的,物理的RAM或虚拟内存:系统可以写入的交换空间 - 空闲的内存内容来自占用内存的大多数空闲程序。为了获得更多的物理内存,你当然可以安装更多的DRAM芯片;或者你可以退出任何你不需要继续运行的占用记忆的程序。

你也可以调整Git的内存使用设置,这样就可以减少内存来进行对象压缩,但通常没有充分的理由这样做(除非你有一个非常旧的Git版本:较新的文件会检测到巨大的二进制文件,甚至不会尝试来压缩它们。)

详细信息

当Git正在推动时,你通常会看到这些:

Counting objects: nnnnn, done.

Compressing objects:  nn% (mmmmm/nnnnn)

进度消息,以向您保证Git实际上正在做一些事情,否则可能会出现长时间停顿。这些来自git pack-objectsgit push运行以使Git称之为瘦包,以发送给您正在推送数据的其他Git。

你的Git实际上完成了"计算对象"阶段并已进入"压缩对象"阶段,这是更多的内存密集型。

因此,git pack-objects正在快乐地打印进度线:

Compressing objects:  xx% (xxxxx/xxx69)

它会在每次打印输出后将光标发送回行的开头,以便下一行覆盖前一行,这样最终它会说" 100%(nnnnn / nnnnn),完成。&# 34; (一旦到达那一点,它就会打印一个换行符,而不仅仅是一个回车符。)

可悲的是,在这一点上Linux或者你正在使用的任何系统决定了太多的程序使用了太多的内存,并选择git pack-objects作为其Out of Memory kill的受害者。它用git pack-objects SIGKILL杀死了error: pack-objects died of signal 9 ,信号为9。

这使您的推送打印:

error: pack-objects died of signal 969)

在上一个进度线上,离开:

x

(注意:我不知道所有69 - 的数字是什么,除了它们必须以remote:结尾。错误消息是不是< / em>以signal 967)为前缀,但signal 967而不只是git pack-objects结束。)

OOM杀手意味着你的系统内存不足。它选择git pack-objects作为其受害者的事实并不一定意味着print本身就是原因您的系统内存不足。它只是系统在过满的鱼缸中看到的最大的鱼。 Linux选择取出那个,而不是取出五条较小的鱼。