🗂
え?まだgit checkoutしてるの?
はじめに
え?まだ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と同じように使えますが、コマンド名がわかりやすくなりました。
詳しい使い方は以下のリンクを参照してください。
基本的な使い方は以下の通りです。
ブランチを切り替える
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と同じように使えますが、コマンド名がわかりやすくなりました。
詳しい使い方は以下のリンクを参照してください。
基本的な使い方は以下の通りです。
ファイルを元に戻す
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で編集を提案
Discussion
git switch
git restore
ともにドキュメントにという記載があるため、gitのバージョンアップ時にオプションや挙動の変更が無いか気をつけたほうが良いかもしれません。
個人的にそれが気になって未だに
git checkout
を使っています(8割くらい手癖ですが)。コメントありがとうございます
は記事に追記しておきます。ありがとうございます
この記事を書いたのに、私も
git checkout
たまに使ってます。(手癖)remewさんのお使いのGitのバージョンが古いのではないでしょうか?この記事で言及しているURL (https://git-scm.com/docs/git-switch と https://git-scm.com/docs/git-restore )にも、私の手元のGit(2.39.2.windows.1)の
git help
にもそんな記載は見当たらなかったです。DESCRIPTIONのセクションの一番下をご覧くださいませ。
https://git-scm.com/docs/git-switch#_description
おお、すみません見逃してました...
だいぶ前に書いたブログです。
表を貼るとcheckoutとの違いが分かりやすかったです。
コメントありがとうございます
表いいですね!参考になります!ありがとうございます!