我解雇了这个命令:
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
答案 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-objects
,git 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选择取出那个,而不是取出五条较小的鱼。