致命的:松散的物体Git

时间:2014-04-28 08:07:34

标签: git version-control

因此,在我的回购周五提交后,我今天早上来到了做git状态时出现此错误

error: object file .git/objects/7f/01a815152d84c99ebdffcb048b612a8a4959d2 is empty
fatal: loose object 7f01a815152d84c99ebdffcb048b612a8a4959d2 (stored in     .git/objects/7f/01a815152d84c99ebdffcb048b612a8a4959d2) is corrupt

奇怪的是,我周六在另一台机器上克隆了它,它很好,甚至推动了它的新变化。我的问题是为什么我收到此错误消息?是什么导致的?它现在经常发生在许多项目上,我想找到根本原因

有没有人遇到过这类错误?

由于

1 个答案:

答案 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>

另见,