用語集 最終更新 2026.09.05

git restore

git restore は、working tree や index の内容を前の状態へ戻すための Git コマンドです。
いまの変更を捨ててよいときに、ファイル単位で戻したり、ステージだけ外したりするときに使います。

まず押さえたいポイント

  • ファイル内容を戻すためのコマンド
  • --staged でステージだけ外せる
  • git reset より初心者には意図が分かりやすいことが多い

どんな場面で使うか

  • 未ステージ変更を捨てたい
  • 間違って add したものを外したい
  • 一部ファイルだけ前の状態へ戻したい

どんなふうに理解するとよいか

初心者向けには、このファイルを今の変更前へ戻すコマンド と考えると入りやすいです。
変更を残したい場面ではなく、戻してよい と判断できた場面で使うのが基本です。

restore / reset / checkout の使い分け

git restore が分かりにくいのは、同じことが古い git checkout でもできてしまうからです。役割で並べると区別が付きます。

やりたいこと コマンド 触る場所
編集を捨てて最後のコミットに戻す git restore ファイル working tree
git add を取り消す(変更は残す) git restore --staged ファイル index
特定のコミットの内容を取り出す git restore --source コミット ファイル 指定した場所
ブランチを移動する git switch ブランチ HEAD
コミット自体を戻す git reset HEAD・index・working tree

git checkout はこのうち「ファイルを戻す」と「ブランチを移動する」を兼ねていたため、事故が起きやすい状態でした。restoreswitch は、その2つを分けるために用意されたものです。

戻したものは戻せない

いちばん怖いのはここです。git restore で working tree の編集を捨てた場合、その編集はコミットにもスタッシュにも残っていないので、Git からは復元できません。git reset --hard と同じ性質の操作だと考えてください。

  • 消していいか自信が無ければ、先に git stash に退避する
  • エディタのローカル履歴が残っている場合はそこから拾えることがある
  • --staged だけを付けた場合は index を戻すだけなので、編集内容は消えない

押さえておきたい注意点

戻した変更は簡単には戻せないことがあります。
少しでも迷うなら、先に git stash で退避した方が安全です。

実務で見るポイント

  • git restore path/to/file はかなり使いやすい
  • git restore --staged で index 側だけ触れる
  • 全部まとめて戻す 前に本当に消してよいか確認した方がよい