【GitHub】Pull Requestを間違えてマージした後の処理

やらかした

いちばんやさしいGit&GitHubの教本にて学習中です。
Lesson41でコンフリクトを発生させるのですが、そのままにしておくべきPull Requestを間違えてマージしてしまいました。
マージを取り消して改めてPRを作り直したかったのですが、There isn’t anything to compareのメッセージが出てPRが出せませんでした。
処理に苦労したので手順をここに残しておきます。

Pull Requestをrevertする

revertブランチの作成

Pull Request を打ち消す - GitHub Docs
GitHubで当該リポジトリのPull request → closedと進み、打ち消すPRをクリックする。

revertボタンがあるので押す。

revertブランチをメインブランチにマージする

rebert用ブランチが作成される(画像緑枠部分)ので、 確認後create pull requestボタンを押す。

次の画面でMerge pull requestボタン、Confirm mergeボタンを押してマージを確定する。


PRを作り直す

ここからは間違えてマージしてしまったPRを作り直します。

GitHubのメインブランチからローカル作業ブランチへpullする

git pull origin master:<作業ブランチ>

revertのコミット番号の確認

git logでrevertのコミット番号を確認します。

revertのrevert

git revert -m 1 <コミット番号>でrevertのrevertをします。 これをすることでPRを出したときの修正内容が復元されます。

修正内容の確認

git log -pで修正内容が元に戻っていることを確認します

pushする

git push origin <作業ブランチ>でpushします。

改めてPull requestを作成する

Git HubからPRを作成して作業完了です。(マージしないように)

ここまでの流れ

図にするとこんな感じです。

revertの仕組み

マージをA+Bだとするとマージの取り消し(revert)の際にAとBどちらに戻すか決める必要があります。
git revert -m 1 <コミット番号>ではオプション-m 1により指定しています。
オレンジの矢印でその流れを示しました。

以上です

私の場合2回目のrevertをしなかったのが原因でPRが出せず苦しみました。
とにかく解決できたのでめでたし🥳