G---H // Release Branch
/
/
A---B---E---F--- // master
\
\
C---D--- // bug fix branch
Based on our particular needs for our project, it is quite common for the above scenario to occur. We have our master/dev branch with some commits. Then we get a bug report and start fixing that on the bug branch (commits C and D above). More commits happen in the dev branch in the meantime. Next we are told we need to create a release for a customer which cannot include the changes introduced by commits B, E and F above, but it should include the bug fix.
So we branch off of dev before change B was ever applied, but what is the best way to get the bug fix into this release branch too? If I perform a merge of the branch it will include the change that was made in B which I don't want. I could perform a cherry-pick of commits C and D but I read that cherry picking is not always a good idea based on this answer basically because my repo would then look like:
G---H---C'---D'--- // Release Branch
/
/
A---B---E---F--- // master
\
\
C---D--- // bug fix branch
So C' and D' appear as completely new commits with different sha-1 IDs as C and D. Is this really a bad thing? What problems can this lead to? Is there a better way of getting the changes from the bug fix branch into the release branch?
This article advises to instead of merging two branches, you would rebase them where git would only rebase non duplicate commits.
But instead of cherry-picking, you might consider just rebasing the branch:
rebase --onto release B bug
where release
is the release branch and bug
is the bug branch.
You then get something like
C'---D' //Bug branch
/
/
G---H // Release Branch
/
/
A---B---E---F--- // master
But this would mean that when you want the bug fixes to be applied to master that you would need to merge bug with master, which causes all the changes in release also to be added to master.
It's up to you to decide what works best for you.
Note that you should not rebase branches that have been pushed to other, because it will create a mess for them.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With