我在 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文件,现在问题解决了..
我不知道出了什么问题。有什么想法..?
Bus error
表示内存有问题;它可能很简单,比如磁盘上的文件损坏、git
程序中的错误,或者内存、内存控制器故障等。
如果您可以在计算机上运行内存测试工具过夜,这将有助于排除内存和控制器故障。 (在大型编译过程中,或者其他程序随机崩溃时,您也可能会发现它们带有奇怪的
SIGBUS
或 SIGSEGV
...)
您可以从笔记本电脑的克隆中在服务器上重新创建存储库,并查看它是否正常运行吗?我的猜测是存储库已损坏,需要用一个好的克隆替换。
我遇到此问题是由于 macOS Sierra (10.12.3) 上的底层文件系统存在问题。本质上,由于某种原因,我的加密 .dmg 已损坏 - 我认为是由于使用 hdutils 进行了扩展。
DiskUtility 诊断出文件系统的问题,但无法修复它。
我找到的唯一解决方案是重新创建图像并重新克隆存储库。
我注意到我的 Git 客户端(Fork)使用了与 Apple 系统安装的 Git 不同版本的 Git。通过更改 GIT GUI 客户端中使用的版本以与系统版本保持一致,我能够解决这个问题。