🧠 「戻す」には3つある
Gitでは「前の状態に戻す」ための方法が複数あります。
それぞれのコマンドは以下のような目的に使われます:
- reset: コミットやステージの状態を巻き戻す(履歴を書き換える)
- revert: 過去の変更を取り消す新しいコミットを追加(履歴は保つ)
- checkout: ファイルやブランチをある時点の状態に切り替える
💥 git reset:履歴を巻き戻す
git reset は過去のコミットまで巻き戻すコマンドです。
ステージ・作業ツリー・履歴の3段階に対して影響を及ぼします。
# 前のコミットに戻る(内容はそのまま)
git reset --soft HEAD^
# 作業ツリーはそのまま、ステージは外れる
git reset --mixed HEAD^
# 全部取り消す(要注意)
git reset --hard HEAD^
❗ 履歴が完全に書き換わるため、共有リポジトリでは非推奨です。
↩️ git revert:安全に打ち消す
git revert は、指定したコミットを「打ち消す」ための新しいコミットを作成します。
# 過去のコミットを打ち消す
git revert [コミットID]
✅ 元の履歴は保たれるため、チーム開発でも安全に使えます。
🧭 git checkout:一時的に戻す
git checkout は、ファイルやブランチの状態を特定の時点に戻す・切り替えるためのコマンドです。
# ファイルを直前のコミットに戻す
git checkout -- index.html
# 過去のブランチに移動
git checkout develop
🔄 変更を保存せずに上書きするため、使用前にステージングや stash をしておくと安心です。
📊 比較まとめ
| コマンド | 主な目的 | 履歴に影響 | 安全性 |
|---|---|---|---|
reset |
履歴を巻き戻す | 🟥 破壊的 | ⚠️ push前のみ安全 |
revert |
指定コミットを打ち消す | 🟩 保持される | ✅ 安全(チーム向け) |
checkout |
一時的に戻す/切り替え | 🟨 影響なし | ◯ 変更前に保存推奨 |
🔑 迷ったら: 個人作業なら reset、チーム作業なら revert!