当尝试进行git-commit或git-status时,如何修复“总线错误”?

11
我在OS X服务器上有一个git仓库,之前一直正常运行。我可以添加文件、提交它们,并将内容拉到我的笔记本电脑上。现在,当我通过ssh登录服务器并在仓库中运行git commitgit status命令时,终端中只显示bus error。尽管git log仍然能够正常工作且给出通常的输出,但我猜测仓库出了问题,因为在同一服务器上的其他仓库中,git commitgit status仍然可以正常工作。我该如何调试/修复这个问题?更新:在问题发生之前,我重新创建了最后创建的目录。这让我能够再次运行git status!然而,在这之后立即运行git commit -a,却给出了以下错误:
fatal: Unable to create '/path/to/repo/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

我随后手动删除了index.lock文件,现在问题已经解决。
我不知道出了什么问题。有任何想法吗?
3个回答

6
总线错误表示存在内存问题;可能是磁盘上的文件损坏、git程序中的错误,或者是内存、内存控制器等硬件故障。
如果您能在计算机上运行一夜的内存测试工具,那将有助于排除内存和控制器的故障。(您也可以在大型编译期间发现奇怪的SIGBUSSIGSEGV,或其他程序的随机崩溃...)
您能否从笔记本电脑的克隆版本重新创建服务器上的存储库,并查看其是否正常运行?我猜测存储库已损坏,需要用良好的克隆版本替换。

谢谢sarnold,你看到我的问题更新了吗?你认为它随机地重新开始工作的事实是否表明服务器确实存在内存问题? - Wilbo Baggins
@Will0,没有更多信息的情况下,我会认为过期的锁定文件是其他所有问题的结果,不必担心。(我知道这听起来很愚蠢,但我想不出如何聪明地表达。)如果它一直出现,请担心:) 但很可能只是磁盘上的一个损坏文件。(这也可能是值得担心的事情,但除非您注意到更多的损坏,否则也不必太担心。) - sarnold
很遗憾,我刚刚遇到了完全相同的问题:S。删除目录使我能够再次使用git status,但由于index.lock文件,再次提交是不允许的。删除index.lock并重新创建相同的目录,服务器上的一切都再次正常运行..但现在我担心会不会再出现同样的问题? - Wilbo Baggins

1
由于macOS Sierra(10.12.3)底层文件系统存在问题,我遇到了这个问题。基本上,由于使用hdutils扩展,我的加密.dmg文件已损坏。
DiskUtility诊断出文件系统的问题,但无法修复它。
我找到的唯一解决方案是重新创建镜像并重新克隆存储库。

0
我注意到我的Git客户端(Fork)使用的是与苹果系统安装的Git不同的版本。通过将GIT GUI客户端使用的版本与系统版本保持一致,我能够解决这个问题。

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