git checkout

指定したコミットにHEADを移動させるコマンド

コマンドの概要

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