git有一个无法修复的损坏的丢失对象

时间:2010-12-03 12:41:46

标签: git

~$ git commit .
error: inflate: data stream error (incorrect data check)
error: corrupt loose object '26f0654cde5d83f2ed8d971474d9d08a76644087'
fatal: object 26f0654cde5d83f2ed8d971474d9d08a76644087 is corrupted

有问题的对象不存在,我每隔一天左右就会做一次提交 因为它没有列出这个对象所在的位置,所以我不知道它是怎么做的 我猜我的最后一个是在上个月30号,所以我最近很平衡,但我仍然不知道为什么它正在做它现在正在做的事情。

我已经尝试git unpack-object -r < objectname但它什么也没做。由于该对象在我的硬盘上不存在任何地方。


原始位现已更改:

Nom,我似乎刚刚发现了它。我没有意识到它实际上是26/26 /而不是自己。显然该文件是在12月1日制作的,因为自上次外部备份以来我没有说过这个对象,我相信是在几天之前。
什么是最好的方法呢?

2 个答案:

答案 0 :(得分:1)

尝试

git stash

这对我有用。它隐藏了你没有做过的任何事情,并解决了这个问题。

答案 1 :(得分:0)

你需要看看这是什么对象。您需要确定它是blob,树,提交还是(不太可能)签名或消息标记。 Git有低级操作命令来执行此操作。

看看this post

我建议使用filter-branch或rebase -i -preserve-merge来清理历史记录,以便所有sha-1解析为正确的对象。