Gitブランチ名の変更で「fatal: your current branch appears to be broken」

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>.

https://stackoverflow.com/a/48716529

リポジトリが壊れるパターン

既存のブランチ名を階層構造に変更しようとした場合に発生しました。
例えば、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

タイトルとURLをコピーしました