元に戻す
このページのゴール:失敗しても3つのコマンドの使い分けで元に戻せる
所要時間の目安: 15分動作確認日: 2026-08-05手順
1. わざとファイルを壊す
練習用リポジトリで、安全に失敗してみます。
cd ~/dev/hello-github
echo "この行は失敗です" >> README.md
>> は「ファイルの末尾に追記する」という意味です。
これでREADME.mdに、消したい行が入ってしまいました。
2. 壊れたことを確認する
git status
modified: README.md(README.mdが変更されています)と表示されます。
3. git restore で戻す
まだcommitしていない変更を取り消すコマンドです。
git restore README.md
もう一度 git status を実行してみてください。
nothing to commit, working tree clean(変更なし)に戻っています。
失敗の行は消え、最後のcommitの状態に戻りました。
4. 3つの使い分けを頭に入れる
「戻す」コマンドは、主に3つあります。暗記は不要です。 困った時に、この表に戻ってくれば十分です。
| コマンド | 何を戻すか | 履歴はどうなる | 使う場面 |
|---|---|---|---|
git restore ファイル名 | まだcommitしていない変更 | 変わらない | 保存前の失敗を取り消す |
git reset --hard 戻り先 | 手元をそのcommitの状態へ | 手元の履歴ごと巻き戻る | push前に丸ごとやり直す |
git revert コミットID | そのcommitの内容 | 「打ち消しcommit」が増える | push後に安全に取り消す |
覚え方は1つだけです。
👉 push前の失敗は reset、push済みの失敗は revert。
5. 迷ったらClaudeに状況を貼る
自分で判断できない時に、勘でコマンドを打つのが一番危険です。 状態を貼って、Claudeに聞いてください。
Gitで元に戻したいです。状況を貼るので、一番安全な戻し方を教えてください。 コマンドを実行する前に、それで何が起きるかも説明してください。 やりたいこと: (例: 直前のcommitより前の状態に戻したい) git status の結果: (ここに貼る) git log --oneline -5 の結果: (ここに貼る)
✅ ここまで出来たらOK
git status
期待される表示:nothing to commit, working tree clean と表示される(手順1の失敗行が消えている)
そうならない場合 → エラー逆引きページ を見てください。
📖 出てきた言葉
restorerestore / リストア
まだcommitしていない変更を取り消して、最後のcommitの状態に戻すコマンド。 「保存前のやらかし」はこれ1つで消せる。3つの中で一番よく使う。
resetreset / リセット
手元の履歴ごと、指定したcommitまで巻き戻すコマンド。 push前の失敗を丸ごとなかったことにできる。強力なので実行前に確認する。
revertrevert / リバート
指定したcommitを打ち消す内容を、新しいcommitとして積むコマンド。 履歴を消さずに戻せるから、push済みでも安全に使える。
reset --hard は取り消せない
⚠️ git reset --hard で消えた「commitしていない変更」は、基本的に復元できません。
実行する前に、消えて困るものがないか必ず確認してください。
迷ったら実行せず、手順5のテンプレでClaudeに聞いてください。
push済みの履歴を reset で巻き戻してしまった
GitHub側と手元の履歴が食い違い、次のpushが拒否されます。 無理に解決しようとせず、エラー文ごとClaudeに貼って相談してください。 force push(強制上書き)を勧められても、意味を確認してから実行してください。