ガイド

checkout と switch の違い

Git 2.23 で登場した switch / restore と従来の checkout の使い分け

checkout と switch の違い diagram

なぜ switch が生まれたのか

git checkout は「ブランチ切替」「ファイル復元」「新ブランチ作成」「特定コミットへの移動」など、まったく異なる操作を1つのコマンドで行っていました。

これは初心者にとって混乱の元であり、上級者でも意図しないファイル変更を起こすリスクがありました。

Git 2.23(2019年)で checkout の機能が switch と restore に分離されました。

ブランチ操作の比較

ブランチ関連の操作は checkout から switch に移行できます。

switch はブランチ操作に特化しているため、誤ってファイルを上書きする心配がありません。

操作 checkout switch
ブランチ切替 git checkout feature git switch feature
新ブランチ作成+切替 git checkout -b new git switch -c new
detached HEAD git checkout abc1234 git switch --detach abc1234
直前のブランチに戻る git checkout - git switch -

ファイル復元の比較

ファイルの復元操作は checkout から restore に移行できます。

restore は復元元(ステージ or コミット)と復元先(作業ツリー or ステージ)を明確に指定できるため、操作の意図がわかりやすくなっています。

操作 checkout restore
作業ツリーの変更を破棄 git checkout -- file git restore file
ステージを取り消し git checkout HEAD -- file git restore --staged file
特定コミットから復元 git checkout abc1234 -- file git restore --source abc1234 file

どちらを使うべきか

これから Git を学ぶ人は switch と restore を使いましょう。

操作の意図が明確で、誤操作のリスクが低いです。

checkout は引き続き使えるため、既存のスクリプトや CI/CD パイプラインを急いで書き換える必要はありません。

チーム内で統一するのがベストです。

bash
# ブランチ操作は switch
git switch main
git switch -c feature/new

# ファイル復元は restore
git restore app.ts
git restore --staged app.ts

関連コマンド