Help us understand the problem. What is going on with this article?

GitでMerge CommitをRevertする方法

More than 5 years have passed since last update.

何個もCommitがあるような一つのPull Requestを全てRevertしたいようなときに使えます。

そもそもRevertとは

あるコミットを打ち消すような、全く逆のコミットを作ることです。
追加した部分を削除して、削除した部分を追加して、変更した部分を変更前の状態にするコミットを作成します。

取り消したいコミットがあるのだけれど、既にリモートにコミットしてしまって、git reset, git rebase -i, git reflogなどを使っての取り消しが不可能なときに使います。

通常のRevert

普通のcommitなら、revertは

$ git revert f60f24d

てな感じで、revertしたいcommit(今回はf60f24d)を指定すれば、実現出来ます。

Merge Commitの場合

ただ、もしf60f24dがMerge Commitだった場合

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

というエラーメッセージが出ます。

これを解決するには

$ git revert -m 1 f60f24d

という風に-m 1と付けるだけです。

念のため確認

念のため、ちゃんと目的のものがrevertされているか確認しましょう。

$ git show

あれ、思っている方と違う方がRevertコミットされている!だめじゃん!!と思ったら、

$ git reset --hard HEAD~

で元の状態に戻して、

$ git revert -m 2 f60f24d

という風に-m 2に変えて試してみましょう。

ちょっと解説

ちなみにこの-m--mainlineの略でparent-numberを指定します。

このparent-numberには基本的に1か2を指定すれば良く、git showをした時に

$ git show f60f24d                              
commit f60f24d34845fba4e038b3e165f74973b3a19580
Merge: 049d32b ebbcb6a
...

と出たとしたら、1は049d32b, 2はebbcb6aを指します。

参考

awakia
検索とか推薦とかやってきたエンジニア。早稲田の山名研出身。大学院の頃、論文を書こうとしない僕を見かねた教授に、北京のMSRAに追放されるが3ヶ月後無事帰還。 大学を卒業後、エンジニアのブラックホールとの別名を持つGoogleに吸収されそうになるが1年2ヶ月後無事生還。 現在は、Wantedly(https://www.wantedly.com/ )の4番目のエージェントとして救出活動に専念。
http://awakia-n.hatenablog.com/
wantedly
「シゴトでココロオドル」ためのビジネスSNS「Wantedly」の開発・運営をしています。
https://wantedlyinc.com/ja/presentations
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした