できない.dev

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 状態から戻れない を参照してください。