♻️ reset / revert / checkout の違い

「戻す」3つのコマンドを正しく使い分けよう

🧠 「戻す」には3つある

Gitでは「前の状態に戻す」ための方法が複数あります。
それぞれのコマンドは以下のような目的に使われます:

💥 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

記事の閲覧数