3

I have one master branch where i am pushing my latest development.

Now at some point, I do release and create new branch called release1 from master branch.

Now i am doing new development on master branch

Meantime other team also perform some bug fixes on release1 branch.

Now time come for release2. Here i need to include bug fixes done on release1 to the updated master branch and then fork release2 branch.

New release2 branch should have all bug fixes done on release1 branch + latest development occurs after release1 on master branch.

What are the different possible workflow here.And based on that how to play with git merge and git rebase and git cherry-pick command here?

Jeegar Patel
  • 26,264
  • 51
  • 149
  • 222
  • 1
    Before you ask/start worrying about the actual Git commands, you first need to decide how you are going to handle this workflow. So a bug fix has been made to only `release1`, but now you have a second release coming. You could merge the first release branch back to master, and then rebase the second release branch. Or, you could cherry pick the bug fix. There are a number of ways to do this. – Tim Biegeleisen Feb 20 '20 at 06:40

1 Answers1

3

Solution which I prefer is as below.

master -> release1

master will have its own further development,

suppose some bug in release1 branch then one should create hotfix branch from release1 branch and after fixing bug in hotfix branch, just merge it into release1 branch and rebase hotfix with master branch to maintain history, once rebased with master branch merge hotfix in master branch so bug fixing will be in both master and release1 branch

now suppose it's time to have release2, you just need to create release2 branch from master branch because all the bugs are already fixed in master branch as well as all the new developments are in master branch.

Master
 commit1
 commit2 -> release1
 commit3
 commit4


git checkout release1
git checkout -b hotfix

Hotfix
 commit2
 bugfix1

Merge hotfix with release1 will become

git checkout release1
git merge hotfix

Release1
 Commit1
 commit2
 butfix1

Rebase hotfix with master it will rewrite your history

git checkout hotfix
git rebase master

Hotfix
 commit1
 commit2
 commit3
 commit4
 bugfix1

after that merge hotfix branch to master branch

git checkout master
git merge hotfix

Master
 commit1
 commit2
 commit3
 commit4
 bugfix1

git branch -d hotfix
git push -d origin hotfix

don't forgot to delete hotfix because we are already done with that branch there is no more requirement of that branch once merged. you can also change names of hotfix branch to the jira ticket id or bug id if logged somewhere.

now creating release2 from master which is already have bug fixed in it.

Prateik Darji
  • 2,297
  • 1
  • 13
  • 29