今回は誤ってmasterブランチで作業してしまい、加えてコミットまたはプッシュもしてしまった場合の対処方法について解説したいと思います。基本的にはコードをコピペするだけで解決できるように解説したいと思います。
対処法まとめ
masterでコミットしてしまった!直前のコミットを取り消したい!
- git reset –soft HEAD^
- git reset –hard HEAD^
masterでコミットしてしまった!複数のコミットを取り消したい!
- git reset –hard <コミットID>
masterでコミット&プッシュしてしまった!直前の履歴を取り消したい!
- git reset –hard HEAD^
- git revert HEAD
masterでコミット&プッシュしてしまった!複数の履歴を取り消したい!
- git revert HEAD~打ち消したい数
masterでコミットしてしまった場合
まずはmasterでコミットしてしまった場合の対処法について見ていきましょう。今回はコミットのみで、プッシュはしていないことが前提です。
このように誤ってmasterブランチで作業をし、そのままコミットしてしまいました。

$ git add .
$ git commit -m "commit master"
commitの後ろに「-m」をつけることで、末尾にどのようなコミットなのかコメントを記入することができます。コミットメッセージは、「なぜ変更をしたか」を意識して書きましょう。
今の状態はこんな感じです。


「git logコマンド」は、これまでのコミット履歴を確認することができるコマンドです。 これまでコミットをコミットメッセージの一覧という形で表示します。
git reset –soft HEAD^
「git reset –soft HEAD^」は直前のコミットを取り消す方法です。コミットした直後、すぐに過ち気づいた場合は使えるコマンドですね。
先ほど誤ってコミットした履歴をこのコマンドで取り消してみましょう。
$ git reset --soft HEAD^
再度「git logコマンド」で確認すると、誤ってコミットしてしまった履歴が取り消されているはずです。

↓ このようにコードの変更履歴も戻ってくる

git reset –hard HEAD^
「git reset –hard HEAD^」は直前のコミットを変更履歴ごと取り消す方法です。先ほどの–softオプションと比べてどのように異なるか見ていきましょう。
同様にmasterブランチでコミットしてしまったと仮定します。
$ git add .
$ git commit -m "commit master"

では「git reset –hard HEAD^」を使ってコミットを取り消してみましょう。
$ git reset --hard HEAD^
再度「git logコマンド」で確認すると、–softオプションの時と同様に誤ってコミットしてしまった履歴が取り消されているはずです。

しかし–hardオプションを指定すると–softオプションの場合と違い、コードの変更履歴が戻ってきません。変更内容が全て消し飛ぶので、–softオプションに比べて慎重に行わなければならない点に注意しましょう。
↓ コードの変更履歴ごとなくなる

git reset –hard <コミットID>
先ほど紹介した–hardオプションは、直前のコミットだけでなく、いかなるコミットも取り消すことができます。その場合は–hardの後ろにコミットIDを付与します。
具体例で見ていきましょう。
以下のようにmasterで作業していたことに気づかず、3回コミットしてしまいました。今の状態を図で表すとこんな感じです。


では「initial commit」のところまで「–hardオプション」を使って戻ってみましょう。以下のコマンドをターミナルで打ち込んでください。そうすると、3つのコミット履歴が取り消されるはずです。
$ git reset --hard d0870d91b65fa9adcbabf3a07ef9797521a79efe

masterでプッシュまでしてしまった場合
次はmasterブランチでプッシュまでしてしまった場合の対処方法について解説したいと思います。
git reset –hard <コミットID>
コミットを取り消すコマンドでも使用しましたが、–hardオプションはプッシュまでしてしまった時にも有効です。手順はコミットを打ち消す時と同じになるので、今回は省略します。
git revert HEAD
「git revert」は、誤ったコミットを打ち消すコミットを新たに生成することで取り消すコマンドです。「git revert HEAD」はプッシュした直後、すぐに過ち気づいた場合は使えるコマンドですね。
まずはエラーを再現してみましょう。以下のようにmasterブラントで作業してしまい、コミット&プッシュをしてしまいました。

$ git add .
$ git commit -m 'push master'
$ git push origin master
すると、このようにGithub上にもコミットされた履歴が残ってしまいました。

↓ git logの結果

これらをrevertを使って解消していきます。以下のコマンドを打ち込むと、誤ったコミットを打ち消すコミットが生成されると思います。
$ git revert HEAD
コマンドを打ち込むと画面が切り替わりますが、「:q」で抜けることができます。
↓ git logの結果

これで打ち消しコミットが生成されたので、あとはpushをするだけです。
$ git push origin master
リモートリポジトリにも打ち消しコミットの内容が反映されましたね。

git revert HEAD~打ち消したい数
「git revert」で複数の打ち消しコミットを作成することも可能です。例えば、最新のコミットを含めて5つ(計6つ)のコミットを打ち消したい場合は以下のようになります。
$ git revert HEAD~6
あとは同様にpushをし直すだけで完了です。
参考図書
(2025/05/13 11:43:27時点 楽天市場調べ-詳細)
今回は、誤ってmasterでコミットもしくはプッシュしてしまった時の対処法について解説しました。1人でやるときはrevertはせず、–hardオプションで直すのがベストかなと個人的には思います。