2010-12-03 113 views
3
~$ git commit . 
error: inflate: data stream error (incorrect data check) 
error: corrupt loose object '26f0654cde5d83f2ed8d971474d9d08a76644087' 
fatal: object 26f0654cde5d83f2ed8d971474d9d08a76644087 is corrupted 

有問題的對象不存在,我一直在做提交隔日左右。
既然它沒有列出這個對象所在的位置,我不知道它是怎麼做的。
我想我的最後一個是在上個月的30號,所以我已經非常失衡,但我仍然不知道爲什麼它現在正在做它正在做的事情。git有一個損壞的丟失對象,無法修復

我試過git unpack-object -r < objectname,它什麼也沒做。由於該對象不存在任何地方我的硬盤上。


原位現改爲:

喃,我似乎剛剛找到了它。我沒有意識到,它實際上是26/26 /而不是自己。顯然這個文件是在12月1日製作的,而且自從上次外部備份以來我沒有提到這個對象,我相信是在幾天之前。
這是怎麼回事?

+0

如果你有一個備份,http://stackoverflow.com/questions/801577/how-to-recover-git-objects-damaged-by-hard-disk-failure可以幫助 – VonC 2010-12-03 12:48:12

+0

可能重複[Git:「腐敗鬆散的對象「](http://stackoverflow.com/questions/4254389/git-corrupt-loose-object) – ripper234 2012-02-20 21:25:11

回答

0

你將需要看看這是什麼對象。您需要確定它是否是blob,樹,提交或(不太可能)簽名或消息標記。 Git有低級別的操作命令來做到這一點。請參閱this post

我會推薦做一個過濾器分支或rebase -i --preserve-merges來清理歷史記錄,以便所有sha-1s解析爲正確的對象。

1

嘗試

git stash 

這爲我工作。它存儲了你沒有做過的任何事情,並且解決了這個問題。