Git 裸存储库失败。缺少必要的对象。不能commit/push

Git Bare repository fail. Missing necessary objects. Can't commit/push

大约一个月我创建了裸 git 存储库。 上个月我一直在通过 SSH 将我的源代码更改从 eclipse 提交到该存储库。

问题发生在今天,当我尝试从 eclipse 提交和推送更新时。这是我遇到的整个错误:

Repository ssh://dany@192.168.0.18:22/home/dany/git/SVP2/
missing necessary objects
error: object file ./objects/60/916b83370c1535a4be9924e71e9954c01e82e0 is empty
error: object file ./objects/60/916b83370c1535a4be9924e71e9954c01e82e0 is empty
fatal: loose object 60916b83370c1535a4be9924e71e9954c01e82e0 (stored in ./objects/60/916b83370c1535a4be9924e71e9954c01e82e0) is corrupt
error: object file ./objects/60/916b83370c1535a4be9924e71e9954c01e82e0 is empty
error: object file ./objects/60/916b83370c1535a4be9924e71e9954c01e82e0 is empty
fatal: loose object 60916b83370c1535a4be9924e71e9954c01e82e0 (stored in ./objects/60/916b83370c1535a4be9924e71e9954c01e82e0) is corrupt

我能猜出哪里出了问题,但我不知道如何解决。

我认为这可能与存储库所在的 linux 服务器上的错误有关:

 Read-only file system

我不知道为什么以及何时我的系统切换到只读模式。

我有备份:

它们可以用来将存储库恢复到工作状态吗?

请帮忙。我很害怕。 我对 git 很陌生。我没有任何团队成员要求这样做。请帮忙。

----------------编辑--------------------

感谢:@codeWizard

在远程裸存储库上

dany@192.168.0.18:~/git/SVP2$ git fsck --full
error: object file ./objects/06/b08928836077489d0ede51a0af42c7807b1943 is empty
error: object file ./objects/06/b08928836077489d0ede51a0af42c7807b1943 is empty
fatal: loose object 06b08928836077489d0ede51a0af42c7807b1943 (stored in ./objects/06/b08928836077489d0ede51a0af42c7807b1943) is corrupt
korbeldaniel@192.168.0.18:~/git/SVP2$ 

在本地工作存储库上

dany@dany1l:~/git/SVP2$ git fsck --full
Checking object directories: 100% (256/256), done.
dany@dany1l:~/git/SVP2$ 

如您所见,它们都是关于同一个对象的。
验证存储库是否处于“良好”状态:

git fsck --full

它将验证您存储库中的所有文件是否处于“良好”状态。
如果任何文件出现错误,它将显示给定的哈希值不正确,这意味着如果文件在列表中并且它不是 dangling 状态,则校验和 (SHA1) 与内容不匹配。

在这种情况下,文件已损坏。


如果文件没有损坏

如果您想验证问题不在您当前的分支中,请检查最后一个工作主控,从中创建新分支并尝试推送新分支。
如果推送有效,那么您已确认问题出在您的某个存储库文件中。

我在 zip 存档中有 git 存储库的正常目录和文件备份,我用它来恢复,修复错误。

  1. ~/git 重命名为 ~/git_old_corrupted
  2. 解压git文件夹和文件结构备份到~/git
  3. 提交并推送到远程存储库(之前已损坏的存储库)

这次提交一次性推送了我之前所有的提交。

现在又恢复正常了。