ステージングやコミットを取り消す- git reset
HEADを指定した状態にリセットします。
概念図
構文
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を確認しましょう。
