注:このリポジトリの破損前のクローンはありません。私の状況は、ここで説明されている他の状況とは異なると思います。なぜなら、ブロブではなく、木が欠けているからです。
どうしたの:
LAN経由で(SSH経由で)リポジトリのクローンを作成しようとすると、Gitはリポジトリが破損しているというエラーを返しました。
remote: error: object file ./objects/2e/223ce259e9e33998d434acc778bc64b393d5d4 is empty
remote: fatal: loose object 2e223ce259e9e33998d434acc778bc64b393d5d4 (stored in ./objects/2e/223ce259e9e33998d434acc778bc64b393d5d4) is corrupt
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
破損の診断に使用できる場所を見つけましたが、新しいことは何もわかりgit fsck
ませんでした。
git fsck --full
error: object file ./objects/2e/223ce259e9e33998d434acc778bc64b393d5d4 is empty
fatal: loose object 2e223ce259e9e33998d434acc778bc64b393d5d4 (stored in ./objects/2e/223ce259e9e33998d434acc778bc64b393d5d4) is corrupt
リポジトリをローカルで(を使用して--no-hardlinks
)複製して何が起こるかを確認しようとしましたが、まったく同じ結果が得られました。
それから私はこの質問に出くわしました、そして答えた人はちょうど空のファイルを削除しました(ステップ3)、それで私はこれをしました(すなわち私は223ce259e9e33998d434acc778bc64b393d5d4
サブディレクトリからファイルを削除しましたobjects/2e/
)。
git fsck
もう一度、そして私は見る:
Checking object directories: 100% (256/256), done.
broken link from tree 838e437f371c652fa4393d25473ce21cbf697d7a
to tree 2e223ce259e9e33998d434acc778bc64b393d5d4
dangling commit 54146bc0dc4eb3eede82a0405b749e05c11c5522
missing tree 2e223ce259e9e33998d434acc778bc64b393d5d4
dangling commit 864864feec207786b84158e526b2faec7799fd4e
dangling blob d3cfd7cc7718d5b76df70cf9865db01c25181bfb
そのため、ツリーに問題があります838e437f37
。それは上記の男に起こったことではないので、私はグーグルに行き、Linusからいくつかの情報を見つけました。
それで、私はそうgit ls-tree 838e437f371c652fa4393d25473ce21cbf697d7a
しました、そして、出力に次の行がありました:
040000 tree 2e223ce259e9e33998d434acc778bc64b393d5d4 moje
現在、「moje」はディレクトリです(Linusが説明したファイルである例とは異なります)。そういうわけで、Linusによって提案された次のステップがgit hash-object moje
返されfatal: Unable to hash moje
ました。
とにかく、それが必要なものである可能性はわずかだったので、さらに調べてみました。私が実行git log --raw --all --full-history -- moje/
したところ、Linusのガイドによると、2e223を一部のコンテンツのSHA-2ハッシュとしてリストするコミットがあるはずですが、何もありません。そしてリストはで終わります
fatal: unable to read source tree (2e223ce259e9e33998d434acc778bc64b393d5d4)
そのエラーの前にリストされている最後のコミットを調べてみましたが、このハッシュは見つかりませんでした。私はこれを見ましたが、おそらく問題のあるバージョンと作業ツリーの現在の状態との間にいくつかの変更があったため、それは私を助けませんでした。
重要なことが1つあります。その中には、Gitリポジトリ自体(サブモジュール)でmoje/
あるディレクトリがあります。cli/
そこで問題のあるSHA-2ハッシュを探しましたが、見つかりませんでした。
私は何をすべきか?