Gitでmerge commitをrevert(巻き戻し)する

もうmergeされちゃっているcommitを取り消したい時に便利。 今回はリリースされたある施策が一旦取取り下げになったので、使ってみた。

1. ログを確認する

$ git log 

戻したいmerge commit のハッシュ値をメモ。

commit 0eb809182efc0096af2be80124482fe1238a6bca
Merge: 2fb2d70 3111ec4
Author: myname <myemail@myemail.com>
Date:   Thu Apr 10 13:54:34 2014 +0900

    Merge pull request #120 from bear/test

    トップページ:修正

2. revertする

$git revert -m 1 0eb809182efc0096af2be80124482fe1238a6bca
//$git revert -m 1 [merge commitのハッシュ値]

pull requestに含まれるcommitをまとめてrevertできた。 機能を復活させたいとなったときは、再度revertすればよいのではないかと思っている。

ちなみにmerge commitを普通のcommitをrevertする時と同じようにrevertすると、 以下のようなエラーが出る。

$ git revert 0eb809182efc0096af2be80124482fe1238a6bca
fatal: Commit 0eb809182efc0096af2be80124482fe1238a6bca is a merge but no -m option was given.