Git Ready
ステージングやコミットを取り消す - git reset の使い方・オプション・サンプル

ステージングやコミットを取り消す- git reset

HEADを指定した状態にリセットします。

概念図

git reset diagram

構文

bash
git reset [--soft|--mixed|--hard] [<commit>]

使用例

直前のコミットを取り消し(変更は保持)

bash
git reset HEAD~1

直前のコミットを完全に取り消し

bash
git reset --hard HEAD~1

モードの違い(--soft / --mixed / --hard)

3つのモードの比較表と、実務での使い分け(コミットメッセージの書き直し・ステージングのやり直し・変更の破棄)は、ガイド reset を実務で使いこなす にまとめています。

注意点

  • コミットの取り消しには基本 git revert を使う

    reset でコミットを消すと履歴自体が書き換わります。プッシュ済みのコミットに対して行うと force push が必要になり、チームに影響を与えます。プッシュ済みのコミットを取り消したい場合は、履歴を壊さない git revert を使ってください。reset はまだプッシュしていないローカルのコミットに限定して使うのが安全です。

  • --hard は未コミットの変更も破棄

    一度破棄した未コミットの変更は復元できないため、実行前に本当に不要な変更か確認しましょう。

  • 誤って --hard した場合の復旧

    万が一 --hard で誤ってリセットしてしまった場合、git reflog からコミットのハッシュを見つけて復元できる場合があります。諦める前にまず git reflog を確認しましょう。

関連コマンド