Gitを使っていると、「間違えてコミットしてしまった!」という経験は誰しもあるのではないでしょうか?
例えば、
commit
メッセージを間違えた- 必要なファイルを追加し忘れた
などといった状況はよくあるかと思います。
しかし、Gitには状況に応じたさまざまなcommit
の取り消し方法が用意されているため、適切な方法を選べば簡単に修正できます。
本記事では、状況別に適切なcommit
の取り消し方法をわかりやすく解説します。
もし誤ってcommit
してしまった場合でも、この記事を読めば安心して対応できるようになるかと思います!
コミットを取り消す方法(状況別)
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~1
HEAD~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を活用しましょう!
コメント