読者です 読者をやめる 読者になる 読者になる

彼女からは、おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

GitHub のプルリクエストをマージした後に巻き戻す

どういうことかというと、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」って覚えておけばよいと思います。

ではでは。