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 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を作成する
切り戻し後に再度切り戻し前の変更内容を再び利用したいケースがあった際の対応方法を整理しておきます!!
ケース
feature/branch-A
にて、開発Aを含むPR1を作成して、main
ブランチにマージされた- その後、切り戻しが必要となって、開発Aを取り消したいとなった場合にPR1をRevertする新しい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を作成する