Gitブランチ名の変更でリポジトリが壊れました。
Stack Overflowの回答を試したところ、なんとか復活出来ました。
いくつかまとめてプッシュする直前に、ブランチ名を変更して壊れたので、結構焦りました。
$ git log fatal: your current branch appears to be broken $ git branch fatal: Failed to resolve HEAD as a valid ref.
If it happens, go to the directories .git/logs/refs/heads/<name> and .git/refs/heads/<name> , and you’ll see your branch is now a folder with a file inside it.
In both folders, move the file out to the folder’s level, checkout that branch, delete the now empty folders and now you should be able to perform git checkout -b <name>/<subname> without error, or git branch -M <name>/<subname>.
リポジトリが壊れるパターン
既存のブランチ名を階層構造に変更しようとした場合に発生しました。
例えば、featureブランチをfeature/1に変えた場合に発生します。
$ git status On branch feature nothing to commit, working tree clean $ git branch -m feature/1 $ git branch fatal: Failed to resolve HEAD as a valid ref.
回避する方法
現在のブランチ名を一旦変更してから実行
$ git branch -m feature.orig $ git branch -m feature/1
別ブランチから実行
$ git checkout develop $ git branch -m feature feature/1