gitコマンド checkoutとswitchの違い ~これからはswitchを使おう~
git switchコマンドとは
git switchコマンドはブランチの切り替えを専用に行うコマンドでバージョン2.23でリリースされました。
git switchコマンドがリリースされるまではgit のブランチの切り替えにはcheckoutコマンドを利用されてきました。
git checkoutにはブランチの切り替え機能以外に変更の取り消し機能があり、gitコマンドに慣れるまではブランチの切り替えでcheckoutというコマンド名に違和感がありました。
そこで、今回はgit のバージョン2.23.0でリリースされたswitchコマンドをcheckoutと比較し違いを確認してみましょう。
git checkoutとgit swtichとの利用方法の違いは?
作業ブランチを切り替える場合
作成済みのブランチに切り替える場合はcheckoutコマンドと変わりません。
git switch <ブランチ名>
例として、masterブランチからdevelopブランチへ作業ブランチを切り替える場合は、git switchコマンドでブランチ名を指定するだけです。
$ git branch
develop
* master
$ git switch develop
Switched to branch 'develop'
Your branch is up to date with 'origin/develop'.
$ git branch
* develop
master
ブランチを作成して作業ブランチを切り替える場合
ブランチの作成と同時に作業ブランチを切り替える場合はcheckoutコマンドとオブションが変わります。
checkoutコマンドの場合は、「-b」オプションでしたが、switchコマンドでは「-c」オプションを使用します。
git switch -c <ブランチ名>
例として、developブランチを作成して作業ブランチをdevelopブランチに切り替える場合は、以下のように実行します。
$ git switch -c develop
Switched to a new branch 'develop'
-cオプション利用時の注意点
「-c」オプションの「c」を大文字、つまり「-C」と設定してしまうと、指定したブランチが存在した場合でも強制的に作成されるため注意してください。
$ git branch
develop
* master
$ git switch -C develop
Switched to and reset branch 'develop'
一つ前のブランチに切り替える場合
作業ブランチを一つ前のブランチに戻す場合は、checkoutコマンド同じで「-」オプションを利用します。
git switch –
例として、masterブランチからdevelopブランチに切り替えた後に、masterブランチに戻しています。
$ git branch
develop
* master
$ git switch develop
Switched to branch 'develop'
$ git branch
* develop
master
$ git switch -
Switched to branch 'master'
$ git branch
develop
* master
これからgitを勉強する方はswitchで覚えた方がわかりやすい
git checkoutコマンドは、ブランチの切り替え意外に変更の取り消し機能も含まれていたので、理解しづらいコマンドでした。
git switchコマンドは直感的もわかりやすく、これからgitを学んでいく場合は率先してswitchコマンドを利用する方がよいと思います。
私はgit checkoutコマンドでの操作になれてしまったので、今でも無意識のうちにcheckoutコマンドを実行しているときがありますが、git aliasでもswitchを指定するなどで、矯正中です。