Memo: Git switch / restore

Git Version 2.23.0よりswitchコマンドとrestoreコマンドが追加されました。両コマンドはこれまでcheckoutコマンドが担ってきた機能を整理し、コマンドとして理解しやすくする目的で追加されています。

switch

switchはブランチの切り替えと新規作成の機能を担います。今までのbranchコマンドとcheckout -bを置き換えます(それぞれのコマンドは今でも有効)。

https://git-scm.com/docs/git-switch/2.23.0

masterブランチへの切り替え

$ git switch master

ブランチの切り替えで、ローカルで変更したファイルに問題が起きた場合には次のようにエラーになります。

$ git switch mytopic
error: You have local changes to 'frotz'; not switching branches.

この場合には、-mオプションで3者間マージにする事ができます。

$ git switch -m mytopic
Auto-merging frotz

-cオプションを使用することで新しいブランチを作成できます(-c--createの短縮形です)。

$ git switch -c good-surprises

任意のコミットから新しいブランチを成長させることができます。たとえば、「HEAD〜3」に切り替えて、ブランチ「fixup」を作成します。

$ git switch -c fixup HEAD~3
Switched to a new branch 'fixup'

restore

復元ソースからの内容を使用して、作業ツリーの指定されたパスを復元します。パスが追跡されているが、復元ソースに存在しない場合は、ソースに一致するように削除されます。

https://git-scm.com/docs/git-restore/2.23.0

インデックス内のバージョンと一致するようにすべてのCソースファイルを復元する場合、次のようにできます。

$ git restore '*.c'

現在のディレクトリ内のすべてのファイルをインデックスの内容で復元するには

$ git restore .

インデックスのファイルを復元して、HEADのバージョンと一致させる

$ git restore --staged hello.c

または、インデックスと作業ツリーの両方を復元できます

$ git restore --source=HEAD --staged --worktree hello.c

感想

どこまでわかりやすくなったのかは疑問だが、今までよりは良いと思う。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください