LoginSignup
9
10

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を外してね。

参考

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10