ブランチ

git switch

ブランチを切り替えます。Git 2.23 で追加された新しいコマンドで、git checkout のブランチ切り替え機能を担います。

構文 git switch <branch>

オプション

フラグ 説明
-c <branch> / --create <branch> 新しいブランチを作成して切り替えます。git checkout -b の代替です。
-C <branch> / --force-create <branch> ブランチが既に存在する場合はリセットし、なければ作成して切り替えます。
--detach ブランチではなくコミットに直接切り替えます(detached HEAD 状態)。
--discard-changes 作業ツリーの未コミット変更を破棄してブランチを切り替えます。

git switch は Git 2.23 で追加されたコマンドで、git checkout が担っていた「ブランチの切り替え」機能だけを担当します。用途が明確なため、現在は git switch の使用が推奨されています。

基本的な使い方

# 既存のブランチに切り替え
git switch main
git switch feature/login

# 新しいブランチを作成して切り替え
git switch -c feature/new-feature

# リモートブランチをもとにローカルブランチを作成して切り替え
git switch -c feature/login origin/feature/login

# 直前にいたブランチに戻る
git switch -

git checkout との対応表

旧コマンド(git checkout)新コマンド(git switch)
git checkout <branch>git switch <branch>
git checkout -b <branch>git switch -c <branch>
git checkout -B <branch>git switch -C <branch>
git checkout --detach <commit>git switch --detach <commit>

注意: git checkout -- <file> のようなファイル復元は git switch では行えません。ファイル復元には git restore を使います。

detached HEAD 状態

# 特定のコミットに切り替える(detached HEAD)
git switch --detach a1b2c3d

# タグのコミットに切り替える
git switch --detach v1.0.0

detached HEAD 状態での変更を保存したい場合は、新しいブランチを作成してください。

git switch -c hotfix/typo

未コミット変更がある場合

ブランチを切り替える前に変更をコミットまたはスタッシュしてください。

# 変更を一時退避してからブランチを切り替え
git stash
git switch feature/other

# 変更を破棄してブランチを切り替え(注意:元に戻せません)
git switch --discard-changes feature/other