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