尝试执行 git-commit 或 git-status 时如何修复“总线错误”

问题描述 投票:0回答:3

我在 OS X 服务器上有一个 git 存储库,以前运行良好。我能够添加文件、提交文件并将内容拉到我的笔记本电脑上。

现在,当我 ssh 进入服务器并在存储库中执行

git commit
git status
时,我在命令行中看到的只是
bus error

git log
仍然可以正常工作并给我通常的输出。

我猜测存储库出了问题,因为在同一服务器上的其他存储库中,

git commit
git 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文件,现在问题解决了..

我不知道出了什么问题。有什么想法..?

git macos bus-error git-status git-commit
3个回答
5
投票

Bus error
表示内存有问题;它可能很简单,比如磁盘上的文件损坏、
git
程序中的错误,或者内存、内存控制器故障等。

如果您可以在计算机上运行内存测试工具过夜,这将有助于排除内存和控制器故障。 (在大型编译过程中,或者其他程序随机崩溃时,您也可能会发现它们带有奇怪的

SIGBUS
SIGSEGV
...)

您可以从笔记本电脑的克隆中在服务器上重新创建存储库,并查看它是否正常运行吗?我的猜测是存储库已损坏,需要用一个好的克隆替换。


1
投票

我遇到此问题是由于 macOS Sierra (10.12.3) 上的底层文件系统存在问题。本质上,由于某种原因,我的加密 .dmg 已损坏 - 我认为是由于使用 hdutils 进行了扩展。

DiskUtility 诊断出文件系统的问题,但无法修复它。

我找到的唯一解决方案是重新创建图像并重新克隆存储库。


0
投票

我注意到我的 Git 客户端(Fork)使用了与 Apple 系统安装的 Git 不同版本的 Git。通过更改 GIT GUI 客户端中使用的版本以与系统版本保持一致,我能够解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.