Gitのrestoreコマンドについて調べてみた

はじめに

この記事では、「Gitのrestoreコマンドの基本的な機能と使い方」について書いています。

Gitにはたくさんのコマンドがあり、また自分は普段TortoiseGitを使っていて全然コマンドを覚えてないので、ちゃんと自分でコマンドを試しながら学んでみるべく記事にしました。

自分に向けた備忘録でもありますが、「Gitのコマンドにまだ習熟してない人」や「Gitのresetコマンドがどういうものか知りたい」な人の一助になれば嬉しいです。

restoreコマンドが生まれた背景

restoreコマンドは、指定されたファイルなどを「戻す」ことができるコマンドで、Gitのrestoreコマンドは、バージョン2.23でリリースされた、新しいコマンドです。

変更を戻す操作は元々checkoutコマンドで出来てましたが、このcheckoutは他にも多くの機能を持っていたため、変更を戻す操作のみが出来るコマンドとしてリリースされたそうです。

こういう背景を考えると、そのうちcheckoutコマンドはなくなるかも分かりませんのでrestoreコマンドで変更を戻す操作を行うように今から慣れておくのが良いかもしれません(ただし、restoreコマンドはまだ実験的機能のようなので注意が必要ですが)

ちなみに、restore以外にもswitchコマンド(ブランチの切り替えを行う)も似たような目的で同じバージョンからリリースがされています。

restoreコマンドの使い方

「変更したがステージングしてない段階」を「変更してない」段階に戻す(=復元する)

ファイルを変更してgit addをしてない段階、git statusだとChanges not staged for commit:の項に出てくる状態のファイルの場合、以下のコマンドにて変更を戻すことができます。

git restore <ファイル名>

この時、restore対象のファイルは、変更を加える前の状態に復元されます。

また、以下のようにファイル名の部分を.とすると、該当する全てのファイルの変更を戻すことができます。

git restore .

「ステージングしたがコミットはまだ」な段階を「ステージングしてない」の段階に戻す

ファイルを変更してgit add、まではしたがgit commitは未だしていない段階、git statusだとChanges to be committed:の項に出てくる状態のファイルの場合、以下のコマンドにて変更を戻すことができます。

git restore --staged <ファイル名>

この時、restore対象のファイルは、ステージングする前の段階(git statusだとChanges not staged for commit:の項に出てくる状態) に戻します。

Note

ファイルを変更前に復元するわけではないのでご注意ください(復元したい場合はgit restore --staged <ファイル名>の後にgit restore <ファイル名>を実行する必要があります。

また、以下のようにファイル名の部分を.とすると、該当する全てのファイルの変更を戻すことができます。

git restore --staged .

おわりに

「Gitのrestoreコマンドの基本的な機能と使い方」について解説しました。

機能が少ないと間違った操作の可能性も少なくなるし、名称も、checkoutよりrestoreという方が個人的に分かりやすくて良いと感じました。

さいごに、記事を書く上で参考にしたサイトのリンクを以下に掲載します。合わせて読んでいただくと良いかと思います。

kakakakakku.hatenablog.com