Webサービスやアプリ開発の現場では必須のバージョン管理システム「Git(ギット)」。Gitは、専用のソフトを使えばクリックで直感的に操作することもできますが、いざというときにコマンドが使えると便利です。
前回の 第7話 では、間違えてリセットしてしまっても元に戻せる「リフログ」を学びました。
・HEAD の移動履歴一覧を表示
・特定の時点までファイルを巻き戻す(nには戻りたい地点の数字を入力)
今回の第8話では、2019年夏にリリースされた新コマンド「switch」 と「restore」 をご紹介します。このコマンドは、checkoutの機能である 「ブランチの切り替え」と「ファイルの変更」を2つに分けたものです。このマンガを通して、わかばちゃんと一緒に知識を身につけていきましょう!
Gitの新コマンド switch と restore って?
2019年8月16日に Git 2.23 がリリースされ、2つの新コマンドが実験的に追加されました。それが switch(スイッチ) と restore(リストア)です。
checkout コマンドは便利である故に「できることが多すぎる」といった点もありました。たとえば、ブランチの切り替え、コミット履歴からのファイル復元、編集内容の取り消しなどです。そこで、checkoutの機能をブランチの切り替え「switch」 と ファイルの変更「restore」 の2つに分け、更に使いやすくしたというわけです。
まずはGitのバージョンを最新版にする
新コマンドを使う前に、まずは自分のパソコンに入っているGitのバージョンを確認してみましょう。次のコマンドを打ち込んで、Gitのバージョンを調べます。
すると、次のようにバージョンが表示されるはずです。
新コマンドの「switch」と 「restore」 が使えるのは、バージョン2.23からですので、表示されたバージョンがそれ以下の場合は、次の手順でアップグレードしましょう。
Homebrewを使えば、次の一行でバージョンを上げることができます。
◆Windows
次のコマンドを打ち込みます。
【インストールでエラーが出てしまった場合】
このような表示が出たら、コマンド「update-git-for-windows」が存在していないという意味です。Git公式サイトから最新のインストーラーをダウンロードして、再チャレンジしましょう。
git switch を使ってみよう
switch コマンドは、ブランチを切り替えることができます。checkout と並べて比較してみましょう。
$ git checkout [ブランチ名]
・ブランチを新規作成して切り替える
$ git checkout -b [ブランチ名]
git restore を使ってみよう
続いて restore コマンドを使ってみましょう。こちらもcheckout と並べて比較してみます。
(addする前の状態から、直前のコミットの状態に戻す)
$ git checkout [ファイル名]
・特定のファイルを、特定のコミット時点に戻す
$ git checkout [コミット識別子] [ファイル名]
(addしたあとの状態から、addする前に戻す)
$ git reset --mixed [ファイル名]
・作業ディレクトリ上の編集内容を取り消したい
(addする前の状態から、直前のコミットの状態に戻したい)
$ git checkout [ファイル名]
$ git reset --hard HEAD(※2)
みたいに使えばよい。
まとめ
今回は、新コマンド switch と restore について学びました。
・ブランチを新規作成して切り替える
・作業ディレクトリ上の編集内容を取り消す
・特定のファイルを、特定のコミット時点に戻す
Gitにはまだまだたくさんのコマンドがあります。
次回はファイルの差分を確認できる diff(ディフ)を学びましょう。
▼登場キャラクター紹介
▼ これまでの「マンガでわかるGit」
第2話「ブランチの概念」
第3話「マージの仕組み」
第4話「コンフリクトの修正」
第5話「git revert」
第6話「git reset 3種類」
第7話「git reflog」
第8話「git switchとgit restore」
第9話「git diff」
第10話「git cherry-pick」
第11話「git stash」
第12話「git grep」
第13話「git blame」
第14話「git remote」
第15話「.gitconfig でコマンドを短縮」
第16話「.gitconfig と .git/config で複数のGitアカウントを使い分ける」
第17話「prune オプション」
第18話「git tag」
第19話「detached HEAD 状態って何?」