LoginSignup
18
11

More than 3 years have passed since last update.

あ!間違えてPRをマージしちゃった!ってときにリバートする方法

Last updated at Posted at 2020-11-21

はじめに

Gitと使って開発しているとPRを作成してレビューしてもらうことがあると思います。
そして、間違えて自分でマージしちゃうこともあると思います。

そんなときのために、マージを取り消す方法をまとめて見ました。
Github上でボタンをポチポチ押すだけで簡単にできます。

ブランチとPR

ブランチ

今回はmasterブランチとtest1ブランチを用意します。
master: initial commitのみ
test1ブランチ: masterから切って、"test1"というメッセージでコミット

PR

test1をmasterに向けてPRを作成しました。(master ← test1)

リバート(revert)する方法

1. マージしてしまったPRからrevertボタンを押す

マージした後は下記のような画面になっていると思いますが、その中にあるrevertボタンを押します。

スクリーンショット 2020-11-21 11.01.06.png

2. mergeを打ち消すPRを作成する

revertボタンを押すと、mergeを打ち消すブランチとPRが自動的に作成されます。

スクリーンショット 2020-11-21 11.01.49.png

3. mergeを打ち消すPRをmergeする

PRを作成するとMerge pull requestボタンがあるのでそれを押します。

スクリーンショット 2020-11-21 11.02.11.png

4. mergeを打ち消すbranchを削除

必須ではないですが、mergeを打ち消すブランチを削除しておきます。(Delete Branchを押す)

スクリーンショット 2020-11-21 11.02.23.png

5. 確認

ブランチを見るとmastertest1のみでmergeを打ち消すブランチはありません

スクリーンショット 2020-11-21 11.02.48.png

コミットはこんな感じになっています。

  • 間違えてしまったマージ
  • リバート
  • マージを打ち消すマージ スクリーンショット 2020-11-21 11.02.59.png

revertしたブランチを再度PRに出したい時

revertしてもう一度PRを出そうとしても差分がなくPRが出せない状態になっています。

スクリーンショット 2020-11-21 15.26.39.png

もう一度PRを出せるようにするには、revertをrevertする必要があるらしい。。。(何をしているかは正直わかっていません。。。)

masterに移動してまずはlogを確認。
(何度か試していて違うコミットになっているので、私の場合上の写真のcommit idと下のcommit idが異なっています。通常は一緒です。)

$ git checkout master

$ git pull # git上でmerge/revertしているのでpullが必要です。

$ git log --oneline
50b197d (HEAD -> master, origin/master) Merge pull request #2from shungo0525/revert-1-test1
0373b56 Revert "test1"
44a8c4b Merge pull request #1 from shungo0525/test1
13740b6 (origin/test1, test1) test1
a78da6f initial commit

test1にmasterをmergeします。

$ git checkout test1
$ git merge master
$ git log --oneline # logで確認

50b197d (HEAD -> master, origin/master) Merge pull request #2 from shungo0525/revert-1-test1
0373b56 Revert "test1"
44a8c4b Merge pull request #1 from shungo0525/test1
13740b6 (origin/test1, test1) test1
a78da6f initial commit

ここからがrevertをrevertする手順

$ git revert 50b197d -m 1
$ git log --oneline
2fb9657 (HEAD -> test1) Revert "Merge pull request #2 from shungo0525/revert-1-test1"
50b197d (origin/master, master) Merge pull request #2 from shungo0525/revert-1-test1
0373b56 Revert "test1"
44a8c4b Merge pull request #1 from shungo0525/test1
13740b6 (origin/test1) test1
a78da6f initial commit

そして最後にpush

$ git push

すると無事にPRが出せるようになりました。

スクリーンショット 2020-11-21 15.52.37.png

おわりに

間違えてしまっても、戻す方法はあるので、落ち着いて対処しましょう。

18
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
11