I want to selectively promote a number of commits from one branch to another with a PR review.
Imagine I have on my master
branch the following commits:
8b08096 - mod4
97eff67 - mod3
b64891f - mod2
fa6e804 - mod1
956e388 - initial
On my staging
branch I have only the following:
956e388 - initial
I now want to "promote" the commits for mod1
, mod2
& mod3
from master
to the staging
branch. So, from staging
I create a new temporary branch and merge the commits up until mod3
:
git checkout staging
git checkout -b promote
git merge 97eff67
Doing a git log
now shows me all the commits including mod3
on my promote
branch:
git log --pretty=oneline
97eff67 (HEAD -> promote) mod3
b64891f mod2
fa6e804 mod1
956e388 (origin/staging, staging) initial
git push origin promote
I can now create my PR for the team to review the changes.
However, when it comes to merging this into the staging
branch, GitHub gives me 3 options; Merge, Squash & Merge and Rebase & Merge. I don't want to do Merge since that gives me a merge commit. I don't want to do Squash & Merge since that will squash all my commits into a single commit so I'm left with Rebase & Merge.
When I do a Rebase & Merge, all the changes are applied to the staging
branch. However, all the commits have now been given new hashes (except of course for the "initial" commit):
2d7177a - mod3
2831f46 - mod2
a8a2e15 - mod1
956e388 - initial
How can I merge the commits from my promote
branch into my staging
branch while keeping the commit hashes intact?