git switchコマンドの使い方 - モダンなブランチ切り替え手法

はじめに

Git を使った開発では、複数のブランチを行き来しながら作業することが日常的です。従来は git checkout コマンドを使ってブランチを切り替えていましたが、Git 2.23(2019年にリリース)から新しく git switch コマンドが導入されました。

この記事では、git switch コマンドの基本的な使い方から応用例まで解説し、従来の git checkout との違いについても触れていきます。

git switch とは?

git switch は、ブランチの切り替えに特化したコマンドです。従来の git checkout はブランチの切り替えと作業ディレクトリの内容の変更の両方を行うことができ、これが少し混乱を招く可能性がありました。

そこで、Git 開発者はこれらの機能を分割しました:

  • git switch: ブランチの切り替えに特化
  • git restore: 作業ディレクトリの内容を復元するために使用

この変更により、コマンドの意図がより明確になり、Git の学習曲線が緩やかになることが期待されています。

基本的な使い方

ローカルブランチへの切り替え

1
git switch ブランチ名

例えば、develop ブランチに切り替えるには:

1
git switch develop

新しいブランチを作成して切り替え

1
git switch -c 新ブランチ名

これは従来の git checkout -b と同等の機能です。例えば:

1
git switch -c feature/login

直前に作業していたブランチに戻る

1
git switch -

これは、現在のブランチと直前に作業していたブランチを素早く行き来するのに便利です。

リモートブランチの扱い方

git switch を使ってリモートブランチを扱う方法はいくつかあります。

リモートブランチを追跡する新しいローカルブランチを作成

1
git switch -c ローカルブランチ名 origin/リモートブランチ名

例えば:

1
git switch -c feature/payment origin/feature/payment

同名の追跡ブランチを作成(よりシンプル)

1
git switch -t origin/ブランチ名

この -t(または --track)オプションを使うと、リモートブランチと同じ名前のローカルブランチを作成し、自動的にそのリモートブランチを追跡するようになります。

例えば:

1
git switch -t origin/feature/login

これは次のコマンドの短縮形です:

1
git switch -c feature/login origin/feature/login

リモートブランチを最新に保つ

リモートブランチをチェックアウトする前に、最新の情報を取得することをお勧めします:

1
2
git fetch origin
git switch -t origin/feature/login

git checkout との比較

従来の方法(git checkout)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# ブランチ切り替え
git checkout develop

# 新ブランチ作成と切り替え
git checkout -b feature/login

# リモートブランチからローカルブランチを作成
git checkout -b feature/payment origin/feature/payment

# リモートブランチを追跡
git checkout --track origin/feature/login

新しい方法(git switch)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# ブランチ切り替え
git switch develop

# 新ブランチ作成と切り替え
git switch -c feature/login

# リモートブランチからローカルブランチを作成
git switch -c feature/payment origin/feature/payment

# リモートブランチを追跡
git switch -t origin/feature/login

基本的な構文は似ていますが、switch の方が意図が明確でシンプルです。

実践的なシナリオ

シナリオ1: フィーチャーブランチへの切り替え

チームでの開発中、feature/navbar という機能に取り組む場合:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 最新のmainブランチを取得
git switch main
git pull

# 新しい機能ブランチを作成
git switch -c feature/navbar

# 作業後、一時的にmainに戻る必要がある場合
git switch main

# 再度feature/navbarに戻る
git switch -

シナリオ2: リモートのステージングブランチをローカルに持ってくる

チームの staging ブランチをローカルに持ってきて作業する場合:

1
2
3
4
5
# リモート情報を更新
git fetch origin

# stagingブランチを追跡してローカルに作成
git switch -t origin/staging

この方法なら、リモートブランチと同じ名前のローカルブランチが作成され、プッシュ・プルも簡単になります。従来の git checkout -b staging origin/staging よりもシンプルです。

注意点とヒント

  1. 既存ブランチ名と衝突する場合: すでに存在するブランチ名で -c オプションを使用するとエラーになります。

  2. 特定のコミットに切り替える:

    1
    
    git switch --detach コミットハッシュ
    

    これによりdetached HEAD状態になります。

  3. 上級テクニック - パターンによるブランチ検索:

    1
    
    git switch -c feature/fix-$(date +%Y%m%d)
    

    日付を含むブランチ名を動的に生成できます。

まとめ

git switch コマンドは、Git の操作をより直感的にする改善の一環として導入されました。ブランチの切り替えに特化しているため、コードベースを整理して効率的に開発を進めるための強力なツールとなります。

特に -t オプションを使ったリモートブランチの追跡は、日々の開発ワークフローで非常に便利です。従来の git checkout よりも意図が明確で、初心者にも使いやすいコマンドとなっています。

日常的な Git 操作の中で git switch を積極的に使って、よりクリーンで理解しやすいワークフローを構築してみてください。

カテゴリ

comments powered by Disqus