🗂

え?まだgit checkoutしてるの?

2024/02/28に公開7

はじめに

え?まだgit checkoutしてるの?

git checkoutといえば、ブランチを切り替えたり、git addしたファイルを元に戻したりするコマンドですが、それはもう古いです。
実は2019年8月リリースのgit 2.23からgit switchとgit restoreが追加されました。
知らなかった人も多いのではないでしょうか?(恥ずかしながら私は知らなかった...)
「先輩、checkoutってなんすか?」と後輩に聞かれる前に、この記事を読んでgit switchとgit restoreを使いこなしましょう。

git switch

git switchはブランチを切り替えるコマンドです。
git checkoutと同じように使えますが、コマンド名がわかりやすくなりました。

詳しい使い方は以下のリンクを参照してください。
https://git-scm.com/docs/git-switch

基本的な使い方は以下の通りです。

ブランチを切り替える

git switch <branch>

新しいブランチを作成して切り替える

git switch -c <branch>

ブランチを上書きして切り替える

-cを間違えて大文字にしてしまうと、同じ名前のブランチがある場合に上書きしてしまいます。

git switch -C <branch>

ブランチを切り替える(変更を保存せず)

git switch -d <branch>

強制的に新しいブランチに切り替える

git switch -f <branch>

一個前のブランチに切り替える

git switch -

git restore

git restoreはファイルを元に戻すコマンドです。
git checkoutと同じように使えますが、コマンド名がわかりやすくなりました。

詳しい使い方は以下のリンクを参照してください。
https://git-scm.com/docs/git-restore

基本的な使い方は以下の通りです。

ファイルを元に戻す

git restore <file>

Staging状態のファイルを元に戻す(git addした後のファイルを元に戻す)

git resetと同じように使えます。

git restore --staged <file>

拡張子を指定してファイルを元に戻す

git restore '*.txt'

指定したコミットの状態に戻す

地味に挙動が違って、git checkoutはStaging状態に戻りますが、git restoreはUnstaging状態に戻ります。

git restore -s <commit hash> <file>

まとめ

以上、git switchとgit restoreの使い方について説明しました。
git 2.23から追加されたコマンドなので、知らない人も多いと思いますが、これを機に使いこなしてみてください。

GitHubで編集を提案
GMOメディアテックブログ

Discussion

remewremew

git switch git restore ともにドキュメントに

THIS COMMAND IS EXPERIMENTAL. THE BEHAVIOR MAY CHANGE.

という記載があるため、gitのバージョンアップ時にオプションや挙動の変更が無いか気をつけたほうが良いかもしれません。
個人的にそれが気になって未だに git checkout を使っています(8割くらい手癖ですが)。

Riya AmemiyaRiya Amemiya

コメントありがとうございます

THIS COMMAND IS EXPERIMENTAL. THE BEHAVIOR MAY CHANGE.

は記事に追記しておきます。ありがとうございます
この記事を書いたのに、私もgit checkoutたまに使ってます。(手癖)