このブログをご覧のみなさん、こんにちは。
ここ最近 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 を指定します。