git switch
コマンド使っていますか?
比較的新しく搭載されたコマンドですので、知らない人も多いかも。
と、思って今回は基本的な操作と便利なオプションまとめてみました。
なにができるの?
git checkout
をベースに実装されたコマンド。
ブランチの「切り替え・作成」ができます。
いつから?使えるバージョンは?
バージョン2.23系から搭載されたようです。(2019年8月リリースみたいですね)
※ 現在の最新バージョンは2.45.2
(2024/07/06時点)
今後の動きは?
THIS COMMAND IS EXPERIMENTAL. THE BEHAVIOR MAY CHANGE.
試験的なのかな…?
結構普及してそうですので、大きな変更は考えにくいですがわかんないですね。
使い方です
ブランチの切り替え
git switch <branch名>
-
git checkout <branch名>
と同じ - vscodeのgit graphでブランチをダブルクリックするのと同じ
ブランチの作成
普通に作成
現在のブランチから派生させて、新しいブランチを作ります。
git switch -c <新ブランチ名>
派生元を指定
git switch -c <新ブランチ名> develop
developブランチを派生元として、新しいブランチを作ります。
コミットをめがけて移動
指定のコミットに移動できます。
git switch --detach <コミットハッシュ>
git switch -d <コミットハッシュ>
なにかと便利です。
不具合の犯人探しに最適です。
(だめです。犯人探しはよくないです。みんなで不具合の原因を探りましょう。)
このオプションがあるって理由だけで、コミットの粒度を気にする人もいるレベルだと思います。そんくらい強力。
筆者はあまり使わないですが...。
今回の記事をきっかけにPoCをしてみました。
派生元を変更
git switch -C <ブランチ名> <派生元>
git switch --force-create <ブランチ名> <派生元>
既に存在するブランチを強制的に、<派生元>
に切り替えます。
Rebaseに近い感じ?ですかね。(あんま使わない。force
って言葉がつくと怖いです。)
変更差分を無視
git switch --discard-changes <ブランチ名>
ブランチ切替時に、ローカルの変更を破棄します。
マージ系
git switch -m <ブランチ名>
git --conflict=<"merge", "diff3", "zdiff3"> <ブランチ名>
標準挙動では、ブランチ切替時の競合が発生した場合、切り替えが拒否されます。
このオプションを使った場合、マージ時の制御を指定することができます。
(筆者はこれ使わない。GUIでやっちゃいます。)
めんどくさがり屋なあなたに…
こう呼び出せたら便利ですよね。
git sw <branch名>
git switch
を打つのすら、だるいってときありませんか?
以下でエイリアスを設定できます。
git config --global alias.sw switch
※ 特定のリポジトリのみで設定したい場合は—global
を外してね。
参考