Git

【Git】ローカルのコミットは変更せず、リモートのコミットのみを取り消す方法

Github

 

今回はローカルのコミット履歴は変更せず、リモートブランチのコミットのみを取り消す方法について解説したいと思います。リモートに誤ってプッシュしてしまった際に役立つ便利なコマンドなので、ぜひ使いこなせるようにしておきましょう。

2020/10/1からGithubのデフォルトブラントはmasterからmainに変更になりました。コマンドを打ち込む際はmasterとmainどちらのブランチを使用しているか確認するようにしましょう。

リモートに誤ってプッシュしてしまった!

リモートにプッシュしたくないコミットにも関わらず、誤ってリモートブランチにプッシュしてしまいました。下図の「2回目の修正」というものがそれに該当します。

リモートに誤ってプッシュしてしまった

 

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

ローカルのコミット
Github
【Git】コピペOK!誤ってmasterブランチでコミット&プッシュしてしまった時の対処法まとめ誤ってmasterブランチで作業してしまい、加えてコミットまたはプッシュもしてしまった場合の対処方法について解説しています。--softオプション、--hardオプション、revertを中心に解説するので、それぞれマスターできるよう学習を進めていきましょう。...

解決方法

ローカルのコミット履歴は変更せずリモートのコミットのみを取り消す、そのような都合の良い方法はあるのでしょうか。結論あります。

以下のコマンドでそのような操作が可能になります。

% git push -f origin リモートの戻りたいコミットID:main

2020/10/1からGithubのデフォルトブランチはmasterからmainに変更になりました。以前のブランチであるmasterブランチを使用している場合は、以下のコマンドを入力しましょう。

% git push -f origin リモートの戻りたいコミットID:master

 

では実際に上記のコマンドを用いて「2回目の修正」というコミット履歴を取り消してみましょう。まずは下図のように、戻りたいコミットのIDを取得します。

戻りたいコミットIDを取得

 

その後、ターミナル上で以下のコマンドを入力します。

% git push -f origin 先ほど取得したコミットID:main
「-f」はリモートブランチに強制的にプッシュすることを表します。

 

すると、ローカルのコミット履歴はそのままでリモートのコミット履歴のみが取り消されたかと思います。このような方法でリモートのコミットのみを取り消すことができます。

2回目の修正のみが取り消された
ローカルのコミット履歴はそのまま

まとめ

  • 2020/10/1からGithubのデフォルトブランチはmasterからmainに変更された
  • ローカルのコミット履歴は変更せず、リモートのコミットのみを取り消すコマンドは「git push -f origin リモートの戻りたいコミットID:main」となる

参考

 

 

今回はローカルのコミット履歴は変更せず、リモートブランチのコミットのみを取り消す方法について解説しました。リモートのコミットのみを取り消したい場合は、わざわざ「git reset –hard」や「revert」を使用するのではなく、ぜひこのような方法を使っていただけたらと思います。