検索と置換コマンドの実行中にgitリポジトリが破損しました(ここを参照してください: 検索と置換後にGitリセットが失敗します )。そこで、gitが到達できないと言ったパックファイルをいくつか削除しました。だから私はrm./.git/index、gitresetを実行しました。 git commitを実行すると、次のメッセージが表示されます。
fatal: corrupt tree sha $someSHA
最後にgitfsckを実行すると、作業ディレクトリがクリーンになり、コミットできました。 pbは、git checkout some_other_branchを実行すると、このメッセージが表示されるようになりました。
fatal: unable to read tree $someSHA
(表示される$ someSHAは同じです)。誰かが私を助けることができますか?
git fsck --fullを実行すると、一連の
error: refs/remotes/repo0/master does not point to a valid object!
error: refs/remotes/repo1/new-version does not point to a valid object!
...
その後、一連の
broken link from tree d935b909f76ea92728d71038d0a67384353e65e1
to blob 05b97658ebd47fee25b76d80ac76cbd07d77961d
...
そして、いくつかの欠落したブロブ...
Git log --raw --all --full-history --subdir/my-fileを実行すると、次のようになります。
error: refs/remotes/repo0/master does not point to a valid object!
error: refs/remotes/repo1/new-version does not point to a valid object!
...
error: Could not read 9096eb9d9dcbdf15a04e0a7c78a3744936f82ac7
fatal: cannot simplify commit 8dfd8e3d5b698dc979300d93d8e89a757abf6ec6 (because of 9096eb9d9dcbdf15a04e0a7c78a3744936f82ac7)
私は走ったgit fsck --full
、私はそのように多くの行を取得します
error: packfile .git/objects/pack/pack-fbfd8042e1e96bf5ffff88f9b5a230b8f5e4d4c4.pack does not match index
fatal: packfile .git/objects/pack/pack-fbfd8042e1e96bf5ffff88f9b5a230b8f5e4d4c4.pack cannot be accessed
...
実行時git checkout
別のブランチに私はそのように多くのメッセージを受け取りました:
error: packfile .git/objects/pack/pack-3e7a0c040a5e3d1c21b91256d583424d82a59706.pack does not match index
warning: packfile .git/objects/pack/pack-3e7a0c040a5e3d1c21b91256d583424d82a59706.pack cannot be accessed
....
fatal: unable to read tree 2ad71d368b65eff0b6fec1ef72c6fdde6e80edad
提案された回答に従って、ファイルを解凍し、チェックアウトすると、次のような行が表示されました。
error: packfile .git/objects/pack/pack-fbfd8042e1e96bf5ffff88f9b5a230b8f5e4d4c4.pack does not match index
warning: packfile .git/objects/pack/pack-fbfd8042e1e96bf5ffff88f9b5a230b8f5e4d4c4.pack cannot be accesse....
次に、で始まる一連の行
error: Your local changes to the following files would be overwritten by checkout:
.idea_local_work/.name
.idea_local_work/libraries/sass_stdlib.xml
.idea_local_work/scopes/scope_settings.xml
... and then aborting
最初に:このプロセスでさらに破損した場合に備えて、.git
ディレクトリのバックアップを作成します。次に:
破損したパックファイルごとに、次のコマンドを実行します。
mv .git/objects/pack/pack-**yourpack**.pack oldpack
git unpack-objects -r < oldpack
git fsck --full
とgit checkout
をもう一度実行して、出力を取得します。
これでチェックアウトできるようになりましたが、まだコミットされていない作業ディレクトリに変更があるため、git checkout -f **yourbranch**
を実行する必要があります。ただし、git checkout -f
を実行すると、これらの変更は失われます。