git checkout
指定したコミットにHEADを移動させるコマンド
コマンドの概要
ブランチの移動、コミットを指定してファイルをレストアするという用途に使う。git 2.23 からそれぞれgit switch
、git restore
が実装されているのでそちらを使った方がよいと思う。git checkout
も従来通り使える。
ブランチの移動
ブランチを指定するとブランチが指し示すコミットにHEADを移動する。
git switch
と同じ。
// master ブランチに移動
$ git switch master
もしくは
$ git checkout master
// ブランチを作って移動する
$ git branch topic
$ git checkout topic
// これを1つのコマンドでやるには
$ git switch -c topic
もしくは
$ git checkout -b topic
まだコミットしていない変更がワーキングリー、インデックスにあるときはブランチ移動できない。git stash
により一時的に変更を退避するか、git switch -f
git checkout -f
により変更を破棄してブランチを移動する。
また、特定のコミットにHEADを移動させるコマンドであり、ブランチによらず、コミットを指定することができる。
通常、HEADはブランチの先頭を参照し、ブランチが特定のコミットを参照するという関係にあるが、git checkout
git switch --detach
により特定のコミットにHEADを移動させると、HEADが直接特定のコミットを参照するようになり、ブランチとの関係が断たれてしまう(detached HEAD)ので留意すること。
指定したコミットからファイルをレストア
コミット、対象のファイルを指定すると指定したコミットのファイルをワーキングツリーに展開することができる。git restore
と同じ。
// HEADからワーキングツリーへリストア
$ git restore <file>
$ git checkout -- <file>
$ git reset --hard HEAD
// <commit>からワーキングツリーへリストア
$ git restore --source <commit> <file>
$ git checkout <commit> -- <file>