git restore
作業ツリーやステージングエリアのファイルを指定した状態に復元します。誤って変更したファイルを元に戻す操作です。
構文
git restore [options] <pathspec>... git restore は、ファイルの変更を取り消すためのコマンドです。Git 2.23 で git checkout から分離されました。作業ツリー(未ステージの変更)とステージングエリアの両方を元に戻せます。
基本的な使い方
# 作業ツリーの変更を取り消す(未ステージの変更を元に戻す)
git restore README.md
# 複数ファイルを一度に戻す
git restore src/index.js src/utils.js
# カレントディレクトリ以下のすべての変更を取り消す
git restore .
注意:
git restoreで作業ツリーを戻すと、その変更は取り消せません。未コミットの変更が失われるため注意してください。
ステージングを取り消す
git add してステージングしたファイルをステージング解除します。ファイルの内容はそのままです。
# ステージングを取り消す(ファイルの内容は変わらない)
git restore --staged README.md
# すべてのステージングを取り消す
git restore --staged .
特定のコミット時点に戻す
# 1つ前のコミット時点の内容に戻す
git restore --source HEAD~1 README.md
# 特定のコミットの内容に戻す
git restore --source abc1234 src/index.js
# 別のブランチの内容に戻す
git restore --source feature/login src/auth.js
作業ツリーとステージの両方を戻す
# --staged と --worktree を同時に指定
git restore --staged --worktree README.md
git checkout との比較
| 操作 | 旧コマンド | 新コマンド |
|---|---|---|
| 作業ツリーの変更を取り消す | git checkout -- <file> | git restore <file> |
| ステージングを取り消す | git reset HEAD <file> | git restore --staged <file> |
git restore は操作の意図が明確なため、新しいスクリプトでは git restore の使用を推奨します。