因此,在我的回购周五提交后,我今天早上来到了做git状态时出现此错误
error: object file .git/objects/7f/01a815152d84c99ebdffcb048b612a8a4959d2 is empty
fatal: loose object 7f01a815152d84c99ebdffcb048b612a8a4959d2 (stored in .git/objects/7f/01a815152d84c99ebdffcb048b612a8a4959d2) is corrupt
奇怪的是,我周六在另一台机器上克隆了它,它很好,甚至推动了它的新变化。我的问题是为什么我收到此错误消息?是什么导致的?它现在经常发生在许多项目上,我想找到根本原因
有没有人遇到过这类错误?
由于
答案 0 :(得分:1)
您的回购中有一个损坏的对象。最简单的做法是放弃它并恢复到你的一个非损坏的备份 - 你表示你有一个好的克隆 - 改为使用它。
如果你想进一步追求这个,你可以尝试从其他非腐败仓库或者其他人那里恢复对象,但这需要一些低级别的git调试。
如果对象是blob,您可以在Linus中找到如何尝试恢复它的快速摘要。 Some tricks to reconstruct blob objects in order to fix a corrupted repository,但如果损坏的对象是树,则您遇到麻烦 - 您可能必须通过创建正确的分段并使用git write-tree
来手动重建树。
要确定您可以备份和删除违规对象,然后运行git-fsck --full
,您应该能够推断出您是否有腐败的树或blob:
$ git fsck --full
broken link from commit <sha-commit>
to tree <sha-tree-1>
missing tree <sha-tree-1>
...
broken link from tree <sha-tree-2>
to blob <sha-blob>
missing blob <sha-blob>
另见,