- 公開日
git switch養成ギプス 〜git checkoutからの卒業〜

本記事はGit Advent Calendar 2020 9日目の記事です。
git 2.23 にて git switch, git restore というコマンドが導入されたことはみなさん既にご存知のことかと思います。
One of our favorite open source projects has a big update... Git 2.23 is here!
— GitHub (@github) August 16, 2019
Read all about the latest release and new features ✨https://t.co/fpQICF8Onc
雑に要約すると「git checkoutに機能もたせすぎてわかりにくくなっちゃったから、git switch, git restoreでわかりやすくしたよ!」ってことだと思います。
一方、まだgit switchに移行しきれていないという人も多くいるのではないかと思います。実際、私の周囲でも今もgit checkoutを使い続けている人をちらほら見るので、本記事ではgit switchに移行していくためのコツを書いてみます。
結論
switch のaliasを設定しろ、そしてcheckoutのaliasを捨てろ
git checkout only時代
checkoutというコマンドは長ったらしいのでaliasを設定して運用していたのではないでしょうか。
僕の場合、下記のようにaliasを設定しました。
# ~/.gitconfig
[alias]
co = checkout
ただこれだと git checkoutをそのまま便利に使い続けてしまうので、思い切ってこいつを削除してしまうと良いかと思います。
もしくは下記のようにメッセージ出すとかでもOK。
# ~/.gitconfig
[alias]
co = !echo "Use git switch/restore instead!"
git switch時代
git switchを使いやすくするために下記のようなaliasを設定します。
# ~/.gitconfig
[alias]
sw = switch
swc = switch -c
こうすることで checkout コマンドが下記のように生まれ変わります。
main branch へ切り替え
before:
$ git checkout main
after:
$ git switch main
# sw = switch を設定している場合
$ git sw main
main branch から hoge branch 作成
before:
git checkout -b hoge main
after:
$ git switch -c hoge main
# sw = switch -c
g swc hoge main
余談
git restoreに対する良いaliasは今のところ見つかっていません。
git resetとalias的に名前空間かぶつかるので、自分の中でしっくりくる命名できていないんですよね。何かいいアイディアのお持ちの方は教えてください。