git checkout
コマンドの概要
ブランチの移動、コミットを指定してファイルをレストアするという用途に使う。git 2.23 からそれぞれgit switch
、git 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>