RubyMineで.gitが原因でGitが表示されない場合の対処
状態
Gitを選択すると以下エラー
code:_
bad object store:Zone.identifier
原因
.git を移動させたのが原因
不要なファイルが.git に紛れ込んだ
不要ファイルを削除することで対処可能
対処
git fsck でエラー原因を特定
Gitが正しく動くか確認できる
削除したコミットの復元等にも使用できる
不要ファイルの削除(pack + refs + logs)
code: (sh)
# .gitが存在するディレクトリで実行
$ git fsck --full
Checking object directories: 100% (256/256), done.
Checking objects: 100% (12411/12411), done.
error: refs/heads/store:Zone.Identifier: invalid sha1 pointer 0000000000000000000000000000000000000000
error: refs/remotes/origin/HEAD:Zone.Identifier: invalid sha1 pointer 0000000000000000000000000000000000000000
error: bad ref for .git/logs/HEAD:Zone.Identifier
error: bad ref for .git/logs/refs/remotes/origin/HEAD:Zone.Identifier
error: bad ref for .git/logs/refs/heads/store:Zone.Identifier
# ↑
不要なファイルが5つ存在する
# 不要ファイルの確認
$ find .git/objects -name "*Zone.Identifier*"
.git/objects/pack/pack-c6a0fec0c941a9ebda9892012b6b787f0775890d.idx:Zone.Identifier
.git/objects/pack/pack-c6a0fec0c941a9ebda9892012b6b787f0775890d.rev:Zone.Identifier
.git/objects/pack/pack-c6a0fec0c941a9ebda9892012b6b787f0775890d.pack:Zone.Identifier
# 不要ファイルの削除(fsckで表示されたファイル + findでヒットしたファイル)
rm -f .git/objects/pack/*.Zone.Identifier
rm -f .git/refs/heads/*:Zone.Identifier
rm -f .git/refs/remotes/origin/*:Zone.Identifier
rm -f .git/logs/*:Zone.Identifier
rm -f .git/logs/refs/heads/*:Zone.Identifier
rm -f .git/logs/refs/remotes/origin/*:Zone.Identifier
# エラー解消
$ git fsck --full
Checking object directories: 100% (256/256), done.
Checking objects: 100% (12411/12411), done.
参照