1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GitHubでプルリクエストのマージするブランチを間違えたのにマージ後に気づいたときのGUI上での対処

Posted at

プルリクエストのレビューでマージ先の確認が漏れていたため、間違ったブランチにマージしてしまうというのが起きたときに、めんどくさい作業を誰かがしないとなーと調べてたらGUIでサクッと修正できたのでそのメモ

要約

  1. 間違ったプルリクエストのrevertボタンからプルリクエストを作成しマージして戻す
  2. revertのプルリクエストから更にrevertボタンを押しプルリクエストを作成する
  3. このときにマージ先を本来マージしたい先にする
  4. マージする

起きたこと

中規模の開発案件で、それ用のマージ先のブランチを用意していたが、プルリクエストがデフォルトブランチのdevelopを向いたままだった上に初期だったためレビューの差分でも気づかず、マージまで行ってしまった。

行ったこと

feature/hogehoge から kaihatsuA ブランチにマージするはずが、developにマージしてしまった

まずは行った修正を戻す(revert)

間違ってマージしてしまったプルリクエストからrevertのプルリクエストを作成できる

image.png

GitHubを使いこなせていないため、GUI上でrevertできることすら知らなかった。

image.png

これはあまり考えずに、マージしてしまって良い。

戻した状況の確認

git初心者だともとに戻ったんだからこれで良いじゃん、と考えてしまう人もいるかもしれないが、revertは時を戻してくれるものではない。
あくまで「前のコードと同じものにする」というだけで、commit historyなどを見るとrevertが「追記」されていることがわかる。

image.png

つまり、前に戻ったのではない。むしろdevelopのほうがマージ元より新しい状態になっている。
そのため、再度developに向けてプルリクエストを送ると差分が出ない。

image.png

そのためマージ先にこの状態でfeature/hogehogeをkaihatsuAにマージしてしまうと、その取消コミットがdevelopにはあるぶん新しいためこのマージ先からdevelopにマージしようとしたときにその差分が出ない・もしくはコンフリクトで泣きを見ることになる。

revertしたものをrevertし、さらに向き先を本来のマージ先にする

先程revertのプルリクエストを出したが、さらにこれのrevertをボタンを押す。
こうすることで、feature/hogehogeから見ると、新しくしたコードを前のコードで書き直して(revert1)、さらにまた新しくしたコードで書き直した(revert2)がプルリクとして作成される

image.png

その上でマージ先を本来のマージ先に向けると行いたかった差分が出てくるはずである。
baseがdevelopに向いているのでkaihatsuAに向ける

image.png

コミット差分はこの通り

image.png

注:このときマージ元のデータはdevelopのデータ+revertの差分なので、developにあってマージ先(kaihatsuA)にないコミットも含まれます。差分を正しく見たい場合は、マージ先にdevelopのデータを取り込めばよいです。

これをマージすれば、期待した差分が目的のブランチにマージされた形になります。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?