今さらながら git switchとgit restore を触ってみる

git のバージョン 2.23 で追加された git switchgit restore コマンド。今まで利用することなく過ごしてきたが、リリースから数年経ったこともあり一度は触ってみたほうが良いのではないか?ということで簡単に触ってみた。

コマンドが追加された経緯

元々ブランチ操作のためのコマンドとして git checkout が用意されていたが、このコマンドはファイルの変更取り消しの機能も持ち合わせており、1つのコマンドとしては多くの役割を持つものになっていた。
コマンドとしてのインターフェイスを分かりやすくすること、およびコマンドの機能を明確に分離する目的で、ブランチの変更は git switch、ファイルの変更取り消しは git restore とそれぞれ役割を分ける形でコマンドを追加した、という旨がリリースのハイライトに記載されている。

なお、2023年2月26日現在の最新バージョン 2.39.2 でも Experimental の記載があるため、今後これらのコマンドの挙動には変更が加わる可能性があることに注意が必要。

詳細なオプションは多数あるが、とりあえず利用頻度が高そうなコマンドを3つ覚えておく。

ブランチの切り替え

git switch で切り替えができる。git checkout と同じ。

git switch <ブランチ名>
git checkout <ブランチ名>

ブランチの作成

git switch -c もしくは git switch --create でブランチが作成できる。git checkout -b と同じ。

git switch -c <ブランチ名>
git checkout -b <ブランチ名>

ファイルの変更取り消し

git restore で変更取り消しができる。git checkout -- と同じ。

git restore <ファイルパス>
git checkout -- <ファイルパス>

感想

switchrestore のネーミングは操作する内容をそのまま表しており、分かりやすく感じる。ただ、長い期間 checkout での操作に慣れているとどうしてもそちらで操作してしまいそうになるので、今後も継続してこちらのコマンドを使い続けるにはある程度の慣れが必要そう。