▪️

git commitを取り消したい

に公開
1

「あ、コミット間違えた…」
Gitを触ってると、こういう瞬間、ありますよね。

でも大丈夫。
git reset を使えば、どこまで戻したいかに応じてちゃんと巻き戻せます。

変更前

変更後

git commitの状態

1. ステージングの状態に戻す

git reset --soft HEAD^

コミットだけ取り消して、変更内容はステージングにそのまま残す。
「コミットメッセージ間違えた…」ってときに便利。

つまり、「内容はOK、コミットだけやり直したい」っていうシチュエーション。

2. 作業ツリーの状態に戻す

git reset --mixed HEAD^

コミットもステージングも取り消して、変更は作業ツリーに戻る。
つまり、ファイルの中身は変わらず残るけど、git addからやり直し。

「あ、これコミット対象まちがえたな」みたいなときにちょうどいい。

3. 変更を完全に破棄する

git reset --hard HEAD^

コミットも変更もすべて破棄。
何もなかった頃の自分に戻れるけど、当然ながら戻れない。

--hard はマジで強力。
「あっ…消えた」ってなる前に、ほんとに消していいか一呼吸おこう。

Discussion

MizMiz

コミットも変更もすべて破棄。
何もなかった頃の自分に戻れるけど、当然ながら戻れない。

gitはgitコマンドによる操作履歴も別途管理されている(git reflogにて確認可能)ため、git reset --hard操作のresetを行うことは可能です。

git reflog について
https://git-scm.com/docs/git-reflog

他の方の記事ですが分かりやすくまとまっているものがありましたので、こちらも参考程度に。
https://qiita.com/getty104/items/cfd98f5f0ea89ef07bf0