【Git】git resetコマンドで直前のコミットを取り消す方法

Git
記事内に広告が含まれています。

「直前のコミットを取り消したい」というときに便利なのが git reset コマンドです。

git reset –mixed HEAD^

直前のコミットを取り消し、ステージングは解除されて変更は作業ツリーに残ります。

git reset --mixed HEAD^

つまり、git addする前の状態に戻ります。

git reset –soft HEAD^

直前のコミットを取り消し、変更内容はステージング状態に残します。

git reset --soft HEAD^

つまり、git commitする前の状態に戻ります。

git reset –hard HEAD^

直前のコミットを取り消すだけでなく、変更内容も完全に削除します。

git reset --hard HEAD^

変更が完全に消えるので、本当に不要なときだけ実行しましょう。

push 済みのコミットについて

もし既にリモートに push 済みのコミットを消したい場合は、そのままでは反映されません。

git push --force-with-lease origin ブランチ名

のように force push する必要があります。

--force-with-lease は、リモート先頭が自分の認識から動いていない場合のみ上書きを許可し、他人の新しい push を誤って消しにくくします。

その他の応用例

  • HEAD^ : 直前のコミット
  • HEAD~2 : 2つ前のコミット

と書くことで、直前以外のコミットも取り消せます。

つまり、以下のように実行すると直近2つのコミットを1つにまとめ直すこともできます。

git reset --soft HEAD~2

# まとめて再コミット
git commit

まとめ

  • git reset --mixed HEAD^
    git addする前の状態に戻す
  • git reset --soft HEAD^
    git commitする前の状態に戻す
  • git reset --hard HEAD^
    → コミットと変更内容も削除する

最後までお読みいただきありがとうございました。

皆さんからのコメントやSNSでのシェア、嬉しい投稿をいただくと本当に励みになります。

もしこの記事が気に入ったら感想をコメントやSNSでシェアしていただけると嬉しいです。

皆さんの声を聞かせてくださいね!

Git
tetsuをフォローする
簿記はじめるってよ

コメント

タイトルとURLをコピーしました