2011-10-04 2 views
6

gitオブジェクトが壊れています。 gitオブジェクトディレクトリ内のファイルのサイズは0です。まずgitで壊れたファイルから回復する方法

のfsck:

git fsck --full 
fatal: loose object a35c1489005cca1ffeb3c2d3e4d63988408b6a24 (stored in .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24) is corrupted 

その後LS:

ls -l .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24 
----------+ 1 sampath ???????? 0 Sep 13 15:26 .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24 

ファイルがディスク上に存在しません!?

# git cat-file -t a35c1489005cca1ffeb3c2d3e4d63988408b6a24 
error: unable to find a35c1489005cca1ffeb3c2d3e4d63988408b6a24 
fatal: git cat-file a35c1489005cca1ffeb3c2d3e4d63988408b6a24: bad file 

私はプルをしようとしたときにこのエラーを最初に見ました。
ファイルを削除してプルしてみましたが、動作しませんでした。ファイルが見つからないと訴えました。私は、ファイルを削除し、fsckを実行したとき

は、それは私が疲れて戻っていくつかのコミットをして行くと、それは助けにはならなかった私にオブジェクト

# git fsck --full 
broken link from commit 1e5980c224ff19b19ad99dbefed4c7c64c58aee6 
       to tree a35c1489005cca1ffeb3c2d3e4d63988408b6a24 
dangling tree 0401d636a512b208dffd6ac6e153ab0a061f8d5d 
dangling blob 58014c0266784a1e3cc1502de82837c5f36c8514 
dangling tree 0507fa56260c693cea678eab0343240c5bba06ad 
dangling tree 130770880c664a0b0cf5a21d037cbdba7480dc90 

のダングリングの多くを示しました。
これをどのように回復するための指針ですか?

+1

どこかにレポのコピーがありますか?あなたがそうした場合、そこからオブジェクトを奪います。あなたがどこかから引っ張ってきたので、うまくいけばそのリポジトリにそのオブジェクトがあります – Andy

+0

http://stackoverflow.com/questions/801577/how-to-recover-git-objects-damaged-by-hard-disk-failure help ? (もちろん、そのレポのバックアップがあれば) – VonC

+0

私はこれを試しました。私はリポジトリをクローンし、オブジェクトを解凍しました。しかし、サイズが0の緩いオブジェクトファイルが見つかりませんでした。これは、まだリモートにプッシュされていないローカルコミットの1つに属していることを意味しますか? –

答えて

1

ツリーが壊れているように見えます。それらのコミットの周りの構造を知っているなら、それが何であるかを推測することができます。うまくいけば、追加または削除されたファイルを推測することができます。あなたのブロブや他の木もぶら下がります。あなたが本当にこれから回復し、レポの他のクローンを持っていない場合、それはまだ可能ですが、時間と労力と運が必要になります。

これが役に立ちます。

関連する問題