変更を元に戻す- git restore
作業ディレクトリやステージングのファイルを復元します。
概念図
構文
bash
git restore [--staged] [--source <commit>] <file>...使用例
作業ディレクトリの変更を元に戻す
bash
git restore file.txtステージングを取り消す
bash
git restore --staged file.txtgit checkout との対応
git restore は Git 2.23 で導入された、git checkout の「ファイル復元」機能を分離した新しいコマンドです。
古いコマンドとの対応は以下の通りです。
| 旧コマンド(checkout) | 新コマンド(restore) |
|---|---|
git checkout -- file.txt |
git restore file.txt |
git checkout HEAD -- file.txt |
git restore --source HEAD file.txt |
git checkout abc1234 -- file.txt |
git restore --source abc1234 file.txt |
git reset HEAD <file> で行っていたステージング取り消しも git restore --staged <file> で代替できます。
ブランチ切り替え機能を持たないので、意図しないブランチ移動を防げる点もメリットです。
注意点
作業ディレクトリの復元は取り消せない
git restore <file>で作業ディレクトリのファイルを元に戻すと、未コミットの変更は完全に失われます。残したい場合は先にgit stashで退避してから実行しましょう。--stagedのみは安全--stagedだけを使った場合はステージングエリアからの取り消しだけが行われ、作業ディレクトリのファイルはそのまま残ります。これは取り消しても困らない安全な操作です。reset との使い分けに迷ったら
ファイルレベルの復元は
restore、コミットレベルの操作はresetという整理が基本です。詳しくは restore と reset の使い分け を参照してください。
