2014-04-28 36 views
1

因此作出承诺,我的回购周五我已经走在今天上午有这样的错误做一个git的状态致命的:宽松对象的Git

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

请告诉我奇怪的是我上周六克隆这另一台机器上时,后这很好,甚至推动了新的变化。我的问题是为什么我得到这个错误信息?是什么原因造成的它现在频繁发生在一些项目上,我想找到根本原因

有没有人有过这种类型的错误的经验?

谢谢

回答

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> 

而且看,

相关问题