どういうことかというと、GitHub のプルリクエストをマージして、ステージング環境とかにデプロイして、動作確認をしていて。。
あれ?なんかちょっとレイアウトが崩れてる、とか。なんか IE だと動かなくない?とか。ありますよね?あれー?開発環境ではちゃんと動いていたんですけどねー、とか。
で、とりあえず git revert で巻き戻して仕切り直そうと思ったら、
$ git revert 90e27bb1b099b32af2bf857571a8abd281bc7349
error: Commit 90e27bb1b099b32af2bf857571a8abd281bc7349 is a merge but no -m option was given.
fatal: revert failed
というエラーになった人のためのエントリーです。もしくは自分が忘れっぽくって、3回もググったので、もういい加減覚えるためのメモです。
どうしてエラーになるのか?
通常のコミットを巻き戻すには
$ git revert {巻き戻したいコミットのハッシュ値}
でよいのですが、GitHub のプルリクエストをマージしたときや、複数のコミットをマージしたときにできるコミットは「マージコミット(merge commit)」といって、巻き戻し方が通常のコミットと異なるからです。
マージコミットの巻き戻し方
$ git revert -m 1 {巻き戻したいマージコミットのハッシュ値}
または
$ git revert --mainline 1 {巻き戻したいマージコミットのハッシュ値}
-m 1 の「1」って何だよ?
。。うまく説明できません。
「2」とかも指定できるけど、それっていつ使うの?って挙動だし。詳しく知りたい人は「git revert --help」って打てば説明出てきますが、とりあえず「-m 1」って覚えておけばよいと思います。
ではでは。