このブログをご覧のみなさん、こんにちは。

ここ最近 revert することが多かったので、Git で commit/merge commit を revert する方法を今後のために残しておきます。

revert とは?

ある commit で入れた変更を打ち消す、全く逆の commit を行うコマンドです。

つまり、追加した部分は削除、削除した部分を追加して、変更した部分を変更前の状態にする commit を行います。

commit を revert する方法

$ git revert {commit id}

というように、revert したい commit id を指定して実行すればいいです。

merge commit を revert する方法

ただし、revert したい commit が merge commit だった場合、

$ git revert {commit id}

を実行すると、

error: Commit {commit id} is a merge but no -m option was given.
fatal: revert failed

というエラーメッセージと共に revert に失敗します。

これを解決するには

$ git revert -m {parent-number} {commit id}

という風に -m {parent-number} を付けて実行する必要があります。

この -m--mainline の略です。

この parent-number は 1 から始まり、git show または git log をした際に表示されます。

$ git show {commit id}
commit {commit id}
Merge: 1234567 abcdefg

上記の場合、1234567 に revert したいなら 1、abcdefg に revert したいなら 2 を指定します。

参考情報