先日、同僚が git switch ほげほげ とコマンドを打っていて、ん? switch って何?初めて見た、となりました。
端的にいうと git checkout コマンドが持っている次の2つの役割を別のコマンドに分けることで用途を明確にしようというものだそうです。
- ブランチの切り替えや作成 →
git switchとして明確化 - 編集したファイルの復元 →
git restoreとして明確化
これらのコマンドは 2019 年に公開されたバージョン 2.23.0 で導入されていたようです。特に新しいものでもなく、単に自分が知らなかっただけでした。https://github.com/git/git/blob/master/Documentation/RelNotes/2.23.0.txt
git checkout と git switch および git restore で同じ操作を実行する場合のコマンドを並べてみます。
| checkout | switch | restore | |
|---|---|---|---|
| 既存の main ブランチへ切り替える | git checkout main |
git switch main |
|
| 新しく develop ブランチを作成し切り替える | git checkout -b develop |
git switch -c develop |
|
| すべてのファイルの変更を取り消す | git checkout . |
git restore . |
checkout ですべて操作している皆さん、気分転換でたまには switch や restore のコマンドも使っても良いかもしれませんね。