Git

The `git checkout` command is used to switch the working directory to the specified branch or commit, or to retrieve specific files from a particular commit.

git checkout

 git checkoutコマンドは、Gitで様々な用途に使われる強力なコマンドです。

基本的な用途

ブランチの切り替え

Git Bash

git checkout ブランチ名
これは、指定したブランチに作業ディレクトリを切り替えるコマンドです。例えば、mainブランチから feature-branchブランチに切り替える場合、以下のように実行します。

Git Bash

git checkout feature-branch
新しいブランチの作成と切り替え

Git Bash

git checkout -b 新しいブランチ名
これは、新しいブランチを作成し、同時にそのブランチに切り替えるコマンドです。例えば、feature-branchという新しいブランチを作成し、それに切り替える場合、以下のように実行します。

Git Bash

git checkout -b feature-branch
特定のコミットやファイルのチェックアウト
特定のコミットに切り替える

Git Bash

git checkout コミットハッシュ
これは、指定したコミットハッシュの状態に作業ディレクトリを切り替えます。ただし、この場合、デタッチドHEAD(detached HEAD)状態になるため、その状態で新しいコミットを作成しても、現在のブランチには反映されません。
特定のファイルを特定のコミットからチェックアウトする

Git Bash

git checkout コミットハッシュ -- ファイルパス
これは、指定したコミットから特定のファイルを現在の作業ディレクトリにチェックアウトするコマンドです。例えば、以前のコミットから file.txtを取り出す場合、以下のように実行します。

Git Bash

git checkout 123abc -- file.txt

注意点

デタッチドHEAD状態
git checkoutで特定のコミットに切り替えると、デタッチドHEAD状態になります。この状態では新しいブランチを作成せずにコミットを続けると、その履歴が保持されない可能性があります。新しい作業を開始する場合は、新しいブランチを作成することをお勧めします。

Git Bash

git checkout コミットハッシュ
# 作業後、新しいブランチを作成
git checkout -b 新しいブランチ名
ファイルの変更がある場合のチェックアウト
作業ディレクトリに未コミットの変更がある場合、git checkoutが失敗することがあります。この場合、変更をコミットするか、git stashで一時的に保存する必要があります。

Git Bash

git stash
git checkout ブランチ名

git switchコマンドとの違い

 Gitのバージョン2.23以降では、git switchコマンドが導入され、ブランチの切り替え専用のコマンドとして推奨されています。git checkoutのブランチ切り替え機能は複数の用途を持つため、混乱を避けるためにブランチの切り替えには git switchが利用されます。

Git Bash

git switch ブランチ名
git switch -c 新しいブランチ名

 これらのコマンドを使い分けることで、Gitでの作業がより効率的に行えるようになります。