我正在调试由硬盘驱动器故障导致的git存储库损坏情况。我有查找对象属于哪个提交?
>git fsck --full
fatal: loose object 25e9d8d2deb964c3da0f86f60bbd5a23e8387349 (stored in
.git/objects/25/e9d8d2deb964c3da0f86f60bbd5a23e8387349) is corrupt
>git show 25e9d8d2deb964c3da0f86f60bbd5a23e8387349
fatal: loose object 25e9d8d2deb964c3da0f86f60bbd5a23e8387349 (stored in
.git/objects/25/e9d8d2deb964c3da0f86f60bbd5a23e8387349) is corrupt
现在,我想知道关于此对象的一些事情 - 它是什么,它属于哪里? (哪个文件夹,其呈交?)
当我试图调查对象的存储,我得到:
>git show e9d8d2deb964c3da0f86f60bbd5a23e8387349
fatal: ambiguous argument 'e9d8d2deb964c3da0f86f60bbd5a23e8387349': unknown revision or
path not in the working tree. Use '--' to separate paths from revisions
我应该如何进行?
我有一个从今天早些时候的存储库的副本,但我不想只是垃圾我的本地更改 - 我宁愿看看我是否可以修复回购,或者只是垃圾一个提交。
P.S. - 我发现了一些关于“松散对象”问题的线索,但没有提供关于如何调查/解决的具体指示,无论是在哪里找到另一个回购库中的腐败对象的备份,以及在没有备份这个对象。
P.S. 2 - 奇怪的是,gitk --all
运作良好,并不在乎这种腐败状态。
我想说的第一件事就是使用'git cat-file -p'来试图找出它是什么类型的对象。 – 2012-02-20 21:55:12
@格雷格 - 输出:'错误:无法解开25e9d8d2deb964c3da0f86f60bbd5a23e8387349头 错误:inflateEnd:失败 致命的:不是有效的对象名25e9d8d2deb964c3da0f86f60bbd5a23e8387349' – ripper234 2012-02-20 22:00:14
好吧,也许尝试一些其他的'猫file'选项,看看你能找出。 – 2012-02-20 22:02:44