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 の学習曲線が緩やかになることが期待されています。
基本的な使い方
ローカルブランチへの切り替え
|
|
例えば、develop
ブランチに切り替えるには:
|
|
新しいブランチを作成して切り替え
|
|
これは従来の git checkout -b
と同等の機能です。例えば:
|
|
直前に作業していたブランチに戻る
|
|
これは、現在のブランチと直前に作業していたブランチを素早く行き来するのに便利です。
リモートブランチの扱い方
git switch
を使ってリモートブランチを扱う方法はいくつかあります。
リモートブランチを追跡する新しいローカルブランチを作成
|
|
例えば:
|
|
同名の追跡ブランチを作成(よりシンプル)
|
|
この -t
(または --track
)オプションを使うと、リモートブランチと同じ名前のローカルブランチを作成し、自動的にそのリモートブランチを追跡するようになります。
例えば:
|
|
これは次のコマンドの短縮形です:
|
|
リモートブランチを最新に保つ
リモートブランチをチェックアウトする前に、最新の情報を取得することをお勧めします:
|
|
git checkout との比較
従来の方法(git checkout)
|
|
新しい方法(git switch)
|
|
基本的な構文は似ていますが、switch
の方が意図が明確でシンプルです。
実践的なシナリオ
シナリオ1: フィーチャーブランチへの切り替え
チームでの開発中、feature/navbar
という機能に取り組む場合:
|
|
シナリオ2: リモートのステージングブランチをローカルに持ってくる
チームの staging
ブランチをローカルに持ってきて作業する場合:
|
|
この方法なら、リモートブランチと同じ名前のローカルブランチが作成され、プッシュ・プルも簡単になります。従来の git checkout -b staging origin/staging
よりもシンプルです。
注意点とヒント
-
既存ブランチ名と衝突する場合: すでに存在するブランチ名で
-c
オプションを使用するとエラーになります。 -
特定のコミットに切り替える:
1
git switch --detach コミットハッシュ
これによりdetached HEAD状態になります。
-
上級テクニック - パターンによるブランチ検索:
1
git switch -c feature/fix-$(date +%Y%m%d)
日付を含むブランチ名を動的に生成できます。
まとめ
git switch
コマンドは、Git の操作をより直感的にする改善の一環として導入されました。ブランチの切り替えに特化しているため、コードベースを整理して効率的に開発を進めるための強力なツールとなります。
特に -t
オプションを使ったリモートブランチの追跡は、日々の開発ワークフローで非常に便利です。従来の git checkout
よりも意図が明確で、初心者にも使いやすいコマンドとなっています。
日常的な Git 操作の中で git switch
を積極的に使って、よりクリーンで理解しやすいワークフローを構築してみてください。