日常的に開発作業をしているところで、突然、fatal: Failed to resolve HEAD as a valid ref.というエラーが出るようになった。
開発に着手するときに、現在のbranchの状態を確認するために、
- git branch
- git status
の両方を実行するが、git branch を実行すると、掲題のエラーが出るようになった。
元の状態に戻せるのかどうか、わからないけど、とりあえず本日の開発に着手したいのと、前回はcommitとしてリモートレポジトリにアップロードしていたので、最悪git cloneしなおしてもいいけど、可能な限り復旧させたいので、いろいろ調べてみたら、ブランチは確認できるようになったので、その手順をまとめておく。
復旧手順
- 現在の開発環境のディレクトリをコピーする(バックアップのため)
- 現在の開発環境ディレクトリを別名にリネームする。
- git cloneする
- git cloneで生成されたディレクトリ配下の.gitを2でリネームしたディレクトリにコピーする。
- git cloneしたディレクトリを削除し、2でリネームしたディレクトリを元に戻す。
コマンドとしては以下。
1 cp -afp test test_backup
2 mv test test_
3 git clone git@(リモートレポジトリのホスト):test.git
4 \cp -afp test/.git test_/
5 rm -rf test/
mv test_ test
これで、もともと開発していたディレクトリでbit branchしてもエラーが出なくなった。
current branchはmasterになっていたが、本来は別のブランチがcurrent branchになっていたはず。
このへんはしょうがないのかも。
その後
上の手順1でバックアップした環境の.git配下をちゃんと見ると、解決する方法があるのかも。