2011-04-20 91 views
15

我的房子剛剛經歷了一次電力中斷,現在我的混帳回購協議(這讓我承諾,當它happended)的報告:Git - 損壞的對象?

[email protected]$ git fsck 
fatal: object 192e0282d23863ec80375a77011012ef8cb80f77 is corrupted 

,因爲這個錯誤,我不能犯。拉和取仍然似乎工作正常。

[email protected]$ git commit 
error: unable to find 192e0282d23863ec80375a77011012ef8cb80f77 
fatal: 192e0282d23863ec80375a77011012ef8cb80f77 is not a valid object 

我試過正在重置,但它沒有做任何事情

git reset HEAD 192e0282d23863ec80375a77011012ef8cb80f77 
git gc 

我該如何解決這個問題?

更新:文件仍然很好,所以我剛剛克隆了一個新的回購實例和手動移動文件(很高興這不是唯一的回購實例!)。但是,我保留了破損的回購,以便我可以嘗試在此處發佈修復,以防下一次

+6

+1因爲*難以置信*運氣不好。 – Nick 2011-04-20 21:21:04

+2

+1進行備份。自我驗證merkle樹的好處在於它們自動驗證自己。問題是,呃...他們自動驗證自己!這是'錯誤檢測'!='錯誤糾正'並帶有復仇! – sehe 2011-04-20 22:05:52

回答

1

你一個新的克隆實際上確實什麼可能是解決這個問題的推薦方式。如果你不需要做一些複雜的事情沒有意義。如果您的工作樹中沒有正確的版本,並且沒有其他乾淨的副本,則這些howtos更適合使用。

無論如何,我認爲你想在停電之前重置上次提交的,將已損壞的對象移出.git/objects,然後重試。它看起來像你的樹可能已經損壞,這就是爲什麼howtos適合恢復blob沒有幫助。