GitHubでPRをRevertした後にそのRevertをさらにRevertする方法

2023.12.19

切り戻し後に再度切り戻し前の変更内容を再び利用したいケースがあった際の対応方法を整理しておきます!!

ケース

  • feature/branch-Aにて、開発Aを含むPR1を作成して、mainブランチにマージされた
  • その後、切り戻しが必要となって、開発Aを取り消したいとなった場合にPR1Revertする新しいPR2を作成して、mainブランチにマージする。これにより、mainブランチは開発Aが適用される前の状態に戻る

再び開発Aをmainブランチに適用させたい場合は下記の手順を実施する。

  • ローカル環境にて、mainブランチを最新状態にする
    • git checkout main
    • git pull origin main
  • git logでRevertされたコミットIDを特定する
% git log
commit 17xxxeea (HEAD -> main, origin/main, origin/HEAD)
Merge: xxx xxx
Author: xxx
Date:   xxx

    Merge pull request #1111 from revert-feature/branch-A

    Revert “API新設”

commit 61xxx6a9
Author: xxx
Date:   xxx

    Revert “API新設”

...
  • commit 61xxx6a9がRevertコミットになるので、こちらを使用する
  • 新しいブランチを作成する
    • git checkout -b feature/branch-B

  • RevertコミットをRevertする
    • git revert 61xxx6a9
    • こちらにより、feature/branch-Aの変更内容が再度適用された新しいコミットが作成される
  • 新しいブランチをリモートにpushする
    • git push origin feature/branch-B
  • 新しいPRとして、PR3を作成する