Ceeds Academy教材アプリ教材・症状語・タグで検索
索引グラフ試す
バージョン管理▸Git

Git: 変更の取り消し(restore / revert / reset)

hands-on所要 25分最新草稿
前提: Git: コンフリクトの解決(merge conflict)→次: Git: .gitignore と README
意味グラフ(この教材と内容的に近い教材・1ネスト)
例え(Analogies)
取り消し=消しゴムの使い分け

下書きの線を消すのが restore、清書済みのページに「訂正」ページを足すのが revert、ノートを数ページ破いて巻き戻すのが reset(破ると戻せないので注意)。

概要

📍 version-control ▸ Git ▸ 変更の取り消し | 種別: hands-on | facts_as_of 2026-06(Git 2.54)

公式ドキュメント — hands-on

🎞 スライド

変更の取り消し

restore / revert / reset

どれを使う?(テキスト図)

まだコミットしてない ─▶ restore(作業ツリー/ステージを戻す)
公開済みを打ち消す ─▶ revert(打ち消しコミットを足す=安全)
手元だけ巻き戻す ─▶ reset(--hard は変更ごと破棄=危険)

安全の原則

共有済み=revert / 未push=reset・restore

—
出典(sources)

git-scm.com/docs (git-restore/revert/reset) ; Git 2.54 / 2026-06確認

確認問題(Review-Questions)
git reset --hard の危険性を述べよ。記述
基礎公式
解答・解説▾ 開く

作業ツリーの変更ごと破棄するため、未保存の変更が失われる(直後なら reflog で復旧できる場合がある)。

共有済み(push済み)のコミットを打ち消すのに適した方法は?択一
基礎公式
解答・解説▾ 開く

git revert(履歴を書き換えない新コミットで打ち消す)。reset --hard は共有履歴では避ける。

目次
例え概要公式ドキュメント出典確認問題
鮮度
最新
更新: 2026-06-15
次回棚卸し: 2026-12-15
周期: 6か月
版: Git 2.54
restore/revert/resetの使い分け
restore/revert/resetの使い分け

概要

「やり直し」には段階があります。まだコミットしてない変更は restore、公開済みコミットの打ち消しは revert、手元の履歴の巻き戻しは reset。安全度と用途が違います。

公式ドキュメント準拠(Git 2.54)

git restore <file>          # 作業ツリーの変更を破棄(直近コミットの状態へ)
git restore --staged <file> # ステージから外す(変更は残る)
git revert <commit>         # 指定コミットを打ち消す「新しいコミット」を作る
git reset --soft HEAD~1     # 直前コミットを取消し、変更はステージに残す
git reset --hard HEAD~1     # 変更ごと破棄(危険)
  • 共有済みの履歴を打ち消すなら revert(履歴を書き換えないので安全)。
  • **手元だけ(未push)**の巻き戻しは reset。--hard は変更を消すので慎重に。

出典: git-restore / git-revert / git-reset

🧭 誤解訂正集

よくある誤解 正しい理解
reset --hard で消したら二度と戻せない 多くは git reflog から復旧できる(完全消失とは限らない)
revert は履歴を消す 履歴は消さず「打ち消すコミットを足す」(共有済みでも安全)

📖 用語

  • restore … まだコミットしていない変更を戻す(作業ツリー破棄/--staged でステージから外す)。
  • revert … 指定コミットを打ち消す「新しいコミット」を作る。履歴を書き換えず安全。
  • reset … 手元の履歴を巻き戻す。--soft は変更を残し、--hard は変更ごと破棄(危険)。
  • HEAD~1 … 直前(1つ前)のコミットを指す表記。
  • reflog … HEADの移動履歴。--hard 直後などの復旧の手がかりになる。

✅ 確認の目安(can-do)

restore・revert・reset の用途と安全度を区別し、なぜ共有済みには revert・未pushには reset/restore かを説明したうえで、**「この取り消しはどのコマンドが安全か」**を判断できる。

⚠️ エラー復旧集

症状 原因 復旧
reset --hard で消してしまった 変更破棄 直後なら git reflog から復旧できる場合あり
どれを使うか迷う — 共有済み=revert / 未push=reset・restore