git推送到github失败,返回“0”;错误:打包对象因信号967“而死亡;

git推送到github失败,返回“0”;错误:打包对象因信号967“而死亡;,git,github,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 没有信号号967,但有信号号9,在Linux和Unix系统上为SIGKILL。我想有人打印了一行,以

我发出了这个命令:

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

没有信号号967,但有信号号9,在Linux和Unix系统上为
SIGKILL
。我想有人打印了一行,以
67
结尾,然后是回车,然后你的本地
git-pack-objects
被“OOM-killer”击中

您需要做的是为您的Linux系统(这是您的系统,而不是您要推动的系统)提供更多内存,或推动更小的提交(或两者兼而有之)。在这种情况下,“内存”可以是实内存、物理RAM或虚拟内存:交换空间,系统可以从占用内存的大部分空闲程序中写入空闲内存内容。为了获得更多的物理内存,你当然可以安装更多的DRAM芯片;或者,您可以退出任何不需要继续运行的占用内存的程序

您还可以调整Git的内存使用设置,这样做可以减少对象压缩所需的内存,但通常没有理由这样做(除非您有一个非常旧的Git版本:较新的版本检测到大量的二进制文件,甚至不尝试压缩它们)

细节 当Git进行推送时,通常会看到以下内容:

Counting objects: nnnnn, done.
以及:

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

您的Git实际上已经完成了“计算对象”阶段,并且已经进入了“压缩对象”阶段,这是一个内存密集型阶段

因此,
git pack objects
正在愉快地打印进度行:

Compressing objects:  xx% (xxxxx/xxx69)
每次打印输出后,它都会将光标发回行的开头,这样下一行就会覆盖上一行,最终会显示“100%(nnnn/nnnnn),done”(一旦到达该点,它会打印一个换行符,而不仅仅是回车符)

不幸的是,在这一点上,Linux或您正在使用的任何系统都认为太多的程序使用了太多的内存,并选择了
git-pack-objects
作为其内存不足的牺牲品。它用信号9将
SIGKILL
杀死了
git-pack对象

这使您的推送打印:

error: pack-objects died of signal 9
在上一条进度线上,留下:

error: pack-objects died of signal 969)
(注意:我不知道所有
x
-s的数字是什么,只是它们必须以
69
结尾。错误消息的前缀不是
remote:
,而是应该以
signal 967
结尾,而不仅仅是
signal 967


OOM杀手表示您的系统内存不足。它选择了
git-pack对象
作为牺牲品并不一定意味着
git-pack对象
本身就是系统内存不足的原因。这只是该系统在满满的鱼缸中看到的最大的鱼。Linux选择去掉那条,而不是去掉五条小鱼。

i选中这个:这个:惊人的答案!这样的洞察力和清晰的细节。非常感谢。
error: pack-objects died of signal 969)