Gitを使っていると、「間違えてコミットしてしまった!」という経験は誰しもあるのではないでしょうか?
例えば、
commitメッセージを間違えた- 必要なファイルを追加し忘れた
などといった状況はよくあるかと思います。
しかし、Gitには状況に応じたさまざまなcommitの取り消し方法が用意されているため、適切な方法を選べば簡単に修正できます。
本記事では、状況別に適切なcommitの取り消し方法をわかりやすく解説します。
もし誤ってcommitしてしまった場合でも、この記事を読めば安心して対応できるようになるかと思います!
初めてITに触れる方々のために、学習を助ける良書もご紹介しております。もしご興味があれば、そちらにも目を通していただければ嬉しく思います。

コミットを取り消す方法(状況別)
Gitでは、commitの取り消し方がいくつかあります。状況に応じて適切な方法を選びましょう。
直前のコミットを修正したい(–amed)
状況
commitした直後に、メッセージを変更したいcommitに追加し忘れたファイルを含めたい
解決方法
--amendオプションを使えば、直前のcommitを修正できます。
git commit --amend実行後
- 既存の
commitメッセージを編集 - ステージングされた新しい変更を既存の
commitに追加
注意点
push前なら安全に修正可能push後にamendすると履歴が書き換わるため、git push --forceが必要
直前のコミットを取り消したい(reset –soft)
状況
- まだ
pushしていないが、直前のcommitをやり直したい
解決方法
reset --softを使うと、commitを取り消して変更を保持できます。
git reset --soft HEAD~1HEAD~1 は、ひとつ前のコミット内容を指します。HEAD~3 にすると3つ前のコミット内容が対象になります。
実行後
commitは取り消されるが、変更はステージングエリアに残る
注意点
commitをやり直したいときに便利push後に使うとリモートと履歴がズレるので注意
コミット内容をひとつ前に戻す手法はこちらの記事で詳しく解説しています。ぜひこちらも参考にしてみてください!

コミットを完全に取り消したい(reset –hard)
状況
commitだけでなく、変更そのものも取り消したい
解決方法
reset --hardを使うと、commitだけでなく、変更も完全に消去できます。
git reset --hard HEAD~1ポイント
commitと変更がすべて削除される
注意点
- この操作は元に戻せないため、慎重に実行すること!
push済みのcommitを削除すると、リモートとの差異が発生する
コミットを取り消して過去の状態に戻したい(revert)
状況
commitをすでにpushしてしまったが、取り消したい
解決方法
revertを使うと、対象のcommitを打ち消す新しいcommitを作成できます。
git revert <コミットID>ポイント
commitを取り消すが、履歴は残る
注意点
resetと違い、履歴を改変せずに取り消せるため、安全push済みのcommitも問題なく取り消し可能
コミットを取り消して履歴を書き換えたい(rebase)
状況
- 何個か前の
commitをまとめて変更・削除したい - 履歴をきれいに整理したい
解決方法
rebase -i(インタラクティブrebase)を使うと、複数のcommitを編集できます。
git rebase -i HEAD~3ポイント
- 直近3つの
commitを編集 - 不要な
commitを削除、メッセージ変更、複数のcommitをまとめる
注意点
push後に使うと履歴が書き換わるため、git push --forceが必要- チーム開発では慎重に使用すること
まとめ
Gitのcommitを取り消す方法はいくつかありますが、状況に応じて適切なコマンドを選ぶことが重要です。
適切な方法を選ぼう!
resetはローカルの履歴を変更するため、push前なら自由に使えるrevertはcommitを打ち消す新しいcommitを作成するため、安全に履歴を維持できるreset --hardは取り返しがつかないため、本当に必要な場合のみ使う
間違えてcommitしても、Gitを正しく理解していれば安心して対応できます。
状況に応じた最適な方法を選び、効率よくGitを活用しましょう!
コメント