Git Ready
変更を元に戻す - git restore の使い方・オプション・サンプル

変更を元に戻す- git restore

作業ディレクトリやステージングのファイルを復元します。

概念図

git restore diagram

構文

bash
git restore [--staged] [--source <commit>] <file>...

使用例

作業ディレクトリの変更を元に戻す

bash
git restore file.txt

ステージングを取り消す

bash
git restore --staged file.txt

git 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 の使い分け を参照してください。

関連コマンド