Git
GitHub
commit

git revertでmerge commitを取り消す

More than 1 year has 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