やらかした
いちばんやさしい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が出せず苦しみました。
とにかく解決できたのでめでたし🥳