ブランチを作らずに特定のコミットを確認したい
過去のコミットの内容を一時的に確認したい場合、そのためだけにブランチを作るのは手間である。git switchに--detachオプションを付けると、ブランチに紐付かないdetached HEAD状態で指定のコミットに切り替えられる。
$ git switch --detach HEAD~3
HEAD is now at 5569e0f 3 commits ago
git statusで確認すると、ブランチではなくコミットに直接HEADが向いている状態が分かる。
$ git status
HEAD detached at 5569e0f
nothing to commit, working tree clean
detached HEAD状態で作成したコミットは、いずれのブランチにも属さない孤立コミットとなる。別のブランチに切り替えると、その孤立コミットはgit logで辿れなくなるため注意が必要である。
-dオプションで短縮できる
--detachは-dに短縮できる。
$ git switch -d HEAD~3
ブランチ名を指定した場合の挙動
--detachにブランチ名を渡すと、そのブランチを現在のブランチにするのではなく、ブランチの先端コミットにdetached HEADで切り替わる。
$ git switch --detach feature
Previous HEAD position was 5569e0f second
HEAD is now at 2bc6427 first
$ git status
HEAD detached at refs/heads/feature
コミットハッシュを直接指定した場合はHEAD detached at 5569e0fのようにハッシュ値が表示される。一方、ブランチ名を指定した場合はHEAD detached at refs/heads/featureのように参照元のブランチ名が表示される。どちらの経路でdetached HEAD状態になったのかを見分けられる。
\第一線のプログラマーの行動原理を学べる!/
