detached HEAD
別名: デタッチドヘッド / detached HEAD state / HEAD 分離
detached HEAD は、HEAD がブランチではなく特定のコミットを直接指している状態。この状態でのコミットはどのブランチにも属さず、別のブランチへ移動すると参照されなくなり見失いやすい。
公開:
定義
detached HEAD は、HEAD がブランチではなく特定のコミットを直接指している状態です。
通常 HEAD はブランチ名を指し、そのブランチがコミットを指しますが、この状態では間のブランチが無くなり、HEAD が直接コミットに貼り付きます。Git で過去のコミットを git checkout <sha> した時などに起こります。
詳細
タグやリモート追跡ブランチ、特定コミットを checkout すると detached HEAD になります。
この状態でもコミットは作れますが、生成したコミットはどのブランチからも参照されません。
残したい場合は git switch -c <新ブランチ>(または git checkout -b)でブランチを作ってから移動します。
よくある誤解
detached HEAD は「壊れた状態」ではありません。
作業位置がブランチから外れているだけで、正常な Git の機能です。
ただしブランチを作らずに別の場所へ移動すると、そのコミットは迷子になり、git reflog を辿らないと見つけにくくなります。
関連
この状態から戻れないときは Git で detached HEAD 状態から戻れない を参照してください。