GitHubでコミットミスしたときの対処法
📝 はじめに
この記事では、GitHub(またはローカルGit)で誤ってコミットしたときの対処法をケース別に紹介します。
「ローカルコミットのみ」「リモートにもpush済み」など、状況ごとの手順や注意点を整理しています。
🚩 ケース1:ローカルでコミットしただけの場合(push前)
1-1. 直前のコミットを修正したい(ファイルやメッセージを直したい)
方法:git commit --amend
-
直前のコミット内容やメッセージを修正して上書きできます。
-
pushしていなければ影響はありません。
# 例:ファイル修正後に
git add 修正したファイル
git commit --amend
# そのままエディタでメッセージも修正可能
--amendはコミットIDを新しくするため、履歴が変わります。push済みの場合は注意。
1-2. 直前のコミットをなかったことにしたい(完全に削除したい)
方法:git reset --soft HEAD~1 or git reset --hard HEAD~1
-
soft: 直前のコミットをなかったことにして、変更内容はそのまま作業ツリーに残る(やり直せる)
-
hard: 直前のコミットも、変更内容も完全になかったことにする(消える!注意)
# コミットだけ取り消し、編集内容は保持(やり直し可)
git reset --soft HEAD~1
# コミットも編集内容も消す(本当に全部キャンセルしたい場合のみ!)
git reset --hard HEAD~1
--hardは本当に全部消すので要注意!不安ならsoftかmixedを使う。
1-3. 複数コミット前に戻したい/なかったことにしたい
方法:git resetで戻したいコミット数分HEADを戻す
-
例:2つ前に戻すなら
HEAD~2
git reset --soft HEAD~2
🛰️ ケース2:push済み(リモートにも反映してしまった場合)
2-1. コミットを修正したい(push後に内容やメッセージのミスに気付いた)
方法:--amendやresetで履歴修正 → git push --force-with-lease
-
修正したい内容を編集し、
git commit --amendやgit rebase -iで直す -
変更後にforce push(
--force-with-lease推奨)でリモートを書き換え
# 例:直前コミット修正→強制push
git commit --amend
git push --force-with-lease
この方法は他の人がそのブランチをpullして作業していない場合のみ推奨。履歴が書き換わるので、他の人の作業に影響が出る可能性あり!
2-2. pushしたコミットを削除・なかったことにしたい
方法:git reset → git push --force-with-lease
-
消したいコミット数だけ
git reset --hard HEAD~n -
git push --force-with-leaseでリモートを上書き
git reset --hard HEAD~1 # 1つ前に戻す例
git push --force-with-lease
複数人で作業している場合は、必ず相談・共有してから行うこと!
2-3. 特定のファイルやコミットだけを取り消したい(履歴は残したい)
方法:git revert
-
revertは、指定したコミットの「逆操作」を新たにコミットして履歴を壊さず元に戻す方法
git revert コミットID
git push
revertなら履歴は壊さずに取り消せるので、チーム開発やオープンソースで多用されます。
🧐 ケース3:コミットメッセージだけ直したい
3-1. 直前のメッセージだけ修正(未push)
git commit --amend
3-2. 複数コミット前のメッセージ修正(未push or push後で単独開発)
git rebase -i HEAD~3 # 3つ前まで編集する例
# pick→rewordでエディタで修正
修正後はpush前ならそのまま、push済みなら--force-with-leaseでpush。
🧑💻 ケース4:とりあえず一旦キャンセルしたい(一時退避)
方法:git stash
-
コミットする前に編集内容を一旦退避したい場合
git stash
# 必要になったら
git stash pop
📚 まとめ
-
push前は
commit --amendやresetで自由に修正・削除できる -
push後は、
revertで安全に取り消し、履歴ごと書き換えたい場合のみ--force-with-leaseで強制push -
チームで作業している場合は、履歴書き換えは要注意・必ず事前に連絡!