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
我不知道为什么以及何时我的系统切换到只读模式。
我有备份:
- eclipse 项目中我本地机器中的源代码,它也是本地 git 存储库
- git 此 git 存储库的捆绑文件
它们可以用来将存储库恢复到工作状态吗?
请帮忙。我很害怕。
我对 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 存储库的正常目录和文件备份,我用它来恢复,修复错误。
- ~/git 重命名为 ~/git_old_corrupted
- 解压git文件夹和文件结构备份到~/git
- 提交并推送到远程存储库(之前已损坏的存储库)
这次提交一次性推送了我之前所有的提交。
现在又恢复正常了。
大约一个月我创建了裸 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
我不知道为什么以及何时我的系统切换到只读模式。
我有备份:
- eclipse 项目中我本地机器中的源代码,它也是本地 git 存储库
- git 此 git 存储库的捆绑文件
它们可以用来将存储库恢复到工作状态吗?
请帮忙。我很害怕。 我对 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 存储库的正常目录和文件备份,我用它来恢复,修复错误。
- ~/git 重命名为 ~/git_old_corrupted
- 解压git文件夹和文件结构备份到~/git
- 提交并推送到远程存储库(之前已损坏的存储库)
这次提交一次性推送了我之前所有的提交。
现在又恢复正常了。