git restore / reset / revertの違い

入門 | 10分 で読める | 2026.06.18

公式ドキュメント

Gitの取り消し操作には、restoreresetrevert があります。名前が似ていますが、影響する場所と安全性が違います。

一言でいうと

未コミットの変更を戻すならrestore、履歴の位置を動かすならreset、公開済みcommitを打ち消すならrevertを使います。

ざっくり比較

コマンド主な用途安全性
git restore作業中の変更を戻す比較的安全だが変更は消える
git resetステージや履歴位置を戻す使い方次第で危険
git revertcommitを打ち消すcommitを作る共有済み履歴で安全

git restore

git restore は、作業ツリーやステージの変更を戻すときに使います。

git restore README.md

これは、README.md の未コミット変更を戻します。

ステージから外す場合は次です。

git restore --staged README.md

git reset

git reset は、ステージを戻したり、ブランチの位置を戻したりします。

ステージだけ外す例です。

git reset HEAD README.md

履歴を戻す場合は注意が必要です。

git reset --hard HEAD~1

これは、直前のcommitに戻るだけでなく、作業ツリーの変更も消します。

reset --hard は未保存の作業を失う可能性があるため、初心者は慎重に扱います。

git revert

git revert は、過去のcommitを打ち消す新しいcommitを作ります。

git revert <commit-hash>

共有済みのcommitを取り消す場合は、履歴を書き換えない revert が安全です。

判断表

やりたいこと使う候補
未コミットのファイル変更を戻すgit restore
addしたファイルをステージから外すgit restore --staged
直前のcommitをまだpushしていない状態でやり直すgit reset --soft など
push済みcommitを取り消すgit revert
作業を全部消して戻す原則避ける。必要なら reset --hard

よくある誤解

誤解実際
取り消しは全部resetでよい目的によりrestore/revertを使い分けます
revertは履歴を消す打ち消す新しいcommitを作ります
reset —hardは安全未コミット変更が消えます
push後もresetで戻せばよい共有済み履歴を書き換える危険があります

まとめ

未コミットの変更を戻すなら git restore、ステージや履歴位置を戻すなら git reset、共有済みcommitを安全に打ち消すなら git revert を使います。特に reset --hard は作業を失う可能性があるため、実行前に git statusgit diff を確認します。

参考リソース

← 一覧に戻る
PR
PR
PR
PR