GitHubでPRをRevertした後にそのRevertをさらにRevertする方法
2023.12.19
切り戻し後に再度切り戻し前の変更内容を再び利用したいケースがあった際の対応方法を整理しておきます!!
ケース
feature/branch-Aにて、開発Aを含むPR1を作成して、mainブランチにマージされた- その後、切り戻しが必要となって、開発Aを取り消したいとなった場合にPR1をRevertする新しいPR2を作成して、
mainブランチにマージする。これにより、mainブランチは開発Aが適用される前の状態に戻る
再び開発Aをmainブランチに適用させたい場合は下記の手順を実施する。
- ローカル環境にて、
mainブランチを最新状態にするgit checkout maingit 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を作成する
切り戻し後に再度切り戻し前の変更内容を再び利用したいケースがあった際の対応方法を整理しておきます!!
ケース
feature/branch-Aにて、開発Aを含むPR1を作成して、mainブランチにマージされた- その後、切り戻しが必要となって、開発Aを取り消したいとなった場合にPR1をRevertする新しいPR2を作成して、
mainブランチにマージする。これにより、mainブランチは開発Aが適用される前の状態に戻る
再び開発Aをmainブランチに適用させたい場合は下記の手順を実施する。
- ローカル環境にて、
mainブランチを最新状態にするgit checkout maingit 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を作成する