[Git] Merge Commit を Revert する方法

git でトピックブランチのマージを revert する方法をご紹介します。

Git

結論 git revert -m 1

-m 1 を付けて git revert すれば良いです。

git revert -m 1 063d4352e5c09c1981e8495a1932656735ea9c4e

解説 git revert -m

merge commit の hash が 063d4352e5c09c1981e8495a1932656735ea9c4e とします。

$ git show 063d4352e5c09c1981e8495a1932656735ea9c4e
 
commit 063d4352e5c09c1981e8495a1932656735ea9c4e
Merge: a8c77d3 6a66237
Author: Tadashi Shigeoka <shigeoka@codenote.net>
Date:   Wed Jul 23 16:03:57 2014 +0900
 
    Merge pull request #7421 from codenote/7379-example
 
    7379 sample

そのまま git revert すると -m option が必要とエラーがでます。

$ git revert 063d4352e5c09c1981e8495a1932656735ea9c4e
error: Commit 063d4352e5c09c1981e8495a1932656735ea9c4e is a merge but no -m option was given.
fatal: revert failed

-m option を付けて git revert してみると、オプションの引数 parent number を指定する必要があります。

git revert 063d4352e5c09c1981e8495a1932656735ea9c4e -m
error: switch `m' requires a value
usage: git revert [options] <commit-ish>...
   or: git revert <subcommand>
 
    --quit                end revert or cherry-pick sequence
    --continue            resume revert or cherry-pick sequence
    --abort               cancel revert or cherry-pick sequence
    -n, --no-commit       don't automatically commit
    -e, --edit            edit the commit message
    -s, --signoff         add Signed-off-by:
    -m, --mainline <n>    parent number
    --rerere-autoupdate   update the index with reused conflict resolution if possible
    --strategy <strategy>
                          merge strategy
    -X, --strategy-option <option>
                          option for merge strategy

-m 1 を付けて git revert すれば良いです。

$ git revert -m 1 063d4352e5c09c1981e8495a1932656735ea9c4e

以上、git で branch の merge を revert した、現場からお送りしました。

参考情報