git revertでmerge commitを取り消す

More than 3 years have passed since last update.


はじめに

以前、「m1でrevertしといて!」と言われて、「へ?」となったことがあったので、メモしておきます。


git revert

まず、revertのシンプルな使い方から。

$ git revert HEAD

でHEADのコミットを取り消すようなコミットを作成してくます。

コミットメッセージを変更する画面が出てくるので変更する場合は変更して、後は勝手にコミットまでやってくれます。

git 履歴を変えるコマンドたち git revert


merge commitをrevertする

revertしようとしたコミットがmerge commitだった場合、エラーが出てしまいます。

$ git revert aaaaaa

error: Commit aaaaaa is a merge but no -m option was given.

こんなときにはm(mainlineオプション)を使います。

mオプションには1または2を基本的に使います。

1のときは「マージされた側のブランチ」、2のときは「マージする側のブランチ」になります。マージしたコミットそのものをrevertするときは1になります。なので、基本的に1を使うといいと思います。

$ git revert -m 1 aaaaaa

$ git revert -m 2 aaaaaa


参考

Gitのrevertの-m(mainline)オプションについて

GitでMerge CommitをRevertする方法

git docs git-revert