GIT包对象死于信号10

时间:2016-11-19 07:37:08

标签: git git-push

我试图将今天的更改推送到远程存储库,我收到以下错误:

git push -u origin master
error: pack-objects died of signal 10

提交和推送昨天工作正常,没有设置更改,没有其他人提交或推送到存储库,提交不是很大,只有大约10个文件。

我正在使用 MacOS Sierra - git版本2.9.3(Apple Git-75), 存储库是GitLab 8.13.5(Git 2.7.4)

整个存储库只有33MB,因此不包含大文件(甚至在提交中也没有)。我正在使用SSH访问存储库。

git config pack.threads 1没有效果。

我还尝试将远程克隆到新位置,编辑一个文件,提交,推送和工作,所以问题应该是特定的提交。

运行git fsck会导致同样的错误:

git fsck
error: unable to open .git/objects/14: Interrupted system call
Checking object directories: 100% (256/256), done.
Bus error: 10

有什么问题?

1 个答案:

答案 0 :(得分:3)

此错误:

error: unable to open .git/objects/14: Interrupted system call

相当神秘。这应该是一个目录,git fsck 应该能够打开它而不会被打断。 1 你可以运行:

ls -ld .git/objects/14

验证目录,如果是,ls -l .git/objects/14查看其中的内容(它应包含零个或多个带有哈希ID的文件作为名称) 2 )。

SIGBUS表示Git中存在某种内部错误。 C程序尝试使用SIGBUS或SIGSEGV时会尝试使用从未被授予的内存地址,或者无效的内存地址(请参阅Bus error vs Segmentation fault并注意决定提供哪种信号是OS-和架构因此,ARM上的Linux,MIPS或SPARC的行为与x86上的相同版本的Linux的行为不同。似乎无论是什么导致Git无法读取存储在存储库中的对象都会导致Git的后续崩溃,但是Git - 或者至少git fsck - 不是 崩溃由于存储库错误。特别是使用git fsck 假设来诊断错误存储库中的错误。无论如何,在打开目录时获取EINTR是不寻常的,至少是这样。

如果文件 非本地(通过网络找到),您可以将它们移动到本地(磁盘上)存储,看看是否至少会使问题消失。这不是"修复"这个错误就像简单地避免"它,但如果那就够了....: - )

1 这可能的一个明显路径是文件或目录是否存储在本地磁盘上,而是存储在网络上,例如就像在AFP服务器上一样。

2 这些名称长度仅为38个字符,在删除前导14后,为剩余部分提供了哈希ID。它们位于14。{/ p>这一事实隐含着.git/objects/14/