今回はローカルのコミット履歴は変更せず、リモートブランチのコミットのみを取り消す方法について解説したいと思います。リモートに誤ってプッシュしてしまった際に役立つ便利なコマンドなので、ぜひ使いこなせるようにしておきましょう。
リモートに誤ってプッシュしてしまった!
リモートにプッシュしたくないコミットにも関わらず、誤ってリモートブランチにプッシュしてしまいました。下図の「2回目の修正」というものがそれに該当します。

リモートとローカルのコミットを同時に取り消すのであれば「git reset –hard」や「revert」を用いることで解消できます。しかし今回は、リモートのコミットは取り消したいもののローカルのコミット履歴は変更したくありません。


解決方法
ローカルのコミット履歴は変更せずリモートのコミットのみを取り消す、そのような都合の良い方法はあるのでしょうか。結論あります。
以下のコマンドでそのような操作が可能になります。
% git push -f origin リモートの戻りたいコミットID:main
2020/10/1からGithubのデフォルトブランチはmasterからmainに変更になりました。以前のブランチであるmasterブランチを使用している場合は、以下のコマンドを入力しましょう。
% git push -f origin リモートの戻りたいコミットID:master
では実際に上記のコマンドを用いて「2回目の修正」というコミット履歴を取り消してみましょう。まずは下図のように、戻りたいコミットのIDを取得します。

その後、ターミナル上で以下のコマンドを入力します。
% git push -f origin 先ほど取得したコミットID:main
すると、ローカルのコミット履歴はそのままでリモートのコミット履歴のみが取り消されたかと思います。このような方法でリモートのコミットのみを取り消すことができます。


まとめ
- 2020/10/1からGithubのデフォルトブランチはmasterからmainに変更された
- ローカルのコミット履歴は変更せず、リモートのコミットのみを取り消すコマンドは「git push -f origin リモートの戻りたいコミットID:main」となる
参考
今回はローカルのコミット履歴は変更せず、リモートブランチのコミットのみを取り消す方法について解説しました。リモートのコミットのみを取り消したい場合は、わざわざ「git reset –hard」や「revert」を使用するのではなく、ぜひこのような方法を使っていただけたらと思います。