git checkout

コマンドの概要

ブランチの移動、コミットを指定してファイルをレストアするという用途に使う。git 2.23 からそれぞれgit switchgit restoreが実装されているのでそちらを使った方がよいと思う。
git checkoutも従来通り使える。

ブランチの移動

ブランチを指定するとブランチが指し示すコミットにHEADを移動する。 git switchと同じ。 main ブランチに移動

1$ git switch main

もしくは

1$ git checkout main

ブランチを作って移動する

1$ git branch topic
2$ git checkout topic

これを1つのコマンドでやるには

1$ git switch -c topic

もしくは

1$ git checkout -b topic

まだコミットしていない変更がワーキングリー、インデックスにあるときはブランチ移動できない。git stashにより一時的に変更を退避するか、git switch -f or git checkout -fにより変更を破棄してブランチを移動する。

また、特定のコミットにHEADを移動させるコマンドであり、ブランチによらずコミットを指定することができる。
通常、HEADはブランチの先頭を参照し、ブランチが特定のコミットを参照するという関係にあるが、git checkout git switch --detachにより特定のコミットにHEADを移動させると、HEADが直接特定のコミットを参照するようになり、ブランチとの関係が断たれてしまう(detached HEAD)ので留意すること。

指定したコミットからファイルをレストア

コミット、対象のファイルを指定すると指定したコミットのファイルをワーキングツリーに展開することができる。git restoreと同じ。 HEADからワーキングツリーへリストア

1$ git restore <file>
2$ git checkout -- <file>
3$ git reset --hard HEAD

commitからワーキングツリーへリストア

1$ git restore --source <commit> <file>
2$ git checkout <commit> -- <file>