git bad default revision 'HEAD' に困ったので手動修正したけど不安しか残らなかった
VirtualBox上のCentOSで開発をしていて、ある日VMがフリーズしたので渋々強制再起動したらローカルリポジトリが壊れた。
表題のエラーが出たのでとりあえず修復したが、完全に直っているか不安で結局リポジトリをcloneし直したという記録。
gitコマンドが軒並み失敗する
$ git status fatal: bad default revision 'HEAD' $ git log fatal: bad default revision 'HEAD'
!?
どういうことやと思ってHEADの中身を見てみる
$ cat .git/HEAD ref: refs/heads/mybranch
よしよし、直近で作業してたブランチのままだ
ブランチのファイルを念のため確認
$ find -name *mybranch* ./.git/refs/heads/mybranch ./.git/refs/remotes/origin/mybranch
ファイルはあるなー
中身どうなってんだろ
$ cat .git/refs/heads/mybranch (空) $ cat .git/refs/remotes/origin/mybranch (空)
あー何も無い
HEADコミットのSHAが取れないからエラーになってるのかな
リモートからブランチの最新コミットを見つけて手動で埋めてみる
$ git ls-remote origin mybranch リモート上の最新SHA refs/heads/mybranch $ echo -n "リモート上の最新SHA" > .git/refs/heads/mybranch
とりあえずこれで動くようにはなったけど...
VMフリーズの影響で一部ファイルが壊れていたようで、他にも影響が残っている可能性があるし、
手動でファイル書き換えているので完全に直っている保証もないんだよなー
で、結局不安だらけだったのでリポジトリをcloneし直した。
あれこれ終わってから気づいたけど、せめてファイルが編集状態のまま残っているか確認して退避させればよかった
気持ち悪いからと、後腐れなく削除した後だった...