取り消し

git restore

作業ツリーやステージングエリアのファイルを指定した状態に復元します。誤って変更したファイルを元に戻す操作です。

構文 git restore [options] <pathspec>...

オプション

フラグ 説明
--staged ステージングエリアのファイルを HEAD の状態に戻します(git add の取り消し)。
--worktree 作業ツリー(ファイル本体)を復元します。--staged と組み合わせることで両方を一度に戻せます。
--source <tree> 復元元のコミットやブランチを指定します(例: --source HEAD~1)。

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 の使用を推奨します。