Gitでコミットを取り消す方法【まだpushしていない場合】

はじめに

Gitで作業していると、

「コミットしたけど、やっぱりやり直したい」

という場面がある。

今回は、まだGitHubへpushしていないコミットを取り消す方法をまとめる。

私自身、コミットメッセージと選択したファイルが合っていなかったので、この方法を使用した。

コミットだけ取り消したい場合

直前のコミットを取り消し、変更内容はそのまま残したい場合は以下を実行する。

git reset --soft HEAD~1

実行前

変更 → add → commit

実行後

変更 → add

コミットだけが取り消される。

変更内容やステージング状態は残るため、コミットメッセージを修正したい場合や、一部修正して再コミットしたい場合に便利である。

変更内容も含めて完全に消したい場合

変更内容ごと削除したい場合は以下を実行する。

git reset --hard HEAD~1

ただし、このコマンドは作業内容そのものが消えるため注意が必要である。

HEAD~1とは

HEAD~1

は「現在のコミットの1つ前」を意味する。

例えば、

A ← B ← C(現在)

という状態で

git reset --soft HEAD~1

を実行すると、

A ← B(現在)

となり、Cのコミットだけが取り消される。

push済みの場合は注意

今回の方法は、

「まだpushしていないコミット」

を取り消す場合に使用する。

すでにGitHubへpushしている場合は、

git revert

を利用することが多い。

まとめ

まだpushしていないコミットを取り消したい場合は、

git reset --soft HEAD~1

を使用する。

  • コミットだけ取り消す
  • 変更内容は残る
  • 再度コミットし直せる

コミットメッセージの修正や、コミット内容を見直したい時によく使うコマンドなので覚えておきたい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です