29
Dec 11

Git branching model followed by us

We use the below branching model for our products JustUnfollow and GrabInbox . This is the article that made me use this branching model.

We have 2 parallel branches – ‘master’ and ‘develop’. All development occurs on the ‘develop’ branch. You can create new branches from the ‘develop’ branch and then merge them back to ‘develop’ once a feature is ready.

When it’s time to deploy a feature, we create a new ‘release-x.x’ (x.x = version) branch from the ‘develop’ branch. We can test this release branch, fix bugs and other small changes to make it ready for release. Once we are certain this branch is ready for release, we merge it with ‘develop’ and also ‘master’. We then tag this commit in master and deploy the ‘master’ to production.

Example git commands:

git checkout develop
git checkout -b release-0.1 develop
git checkout develop
git merge –no-ff release-0.1 develop
git checkout master
git merge –no-ff release-0.1 master
git tag “0.1″
git branch -d release-0.1

Now, if there are bug fixes that need to go into production quickly, we create a new ‘hotfix-x.x’ branch from ‘master’. After fixing the bug, we merge ‘hotfix-x.x’ to ‘master’ and also ‘develop’. We then tag this release in ‘master’ and deploy the ‘master’ to production.

Example git commands:

git checkout master
git checkout -b hotfix-0.1.1 master
git checkout develop
git merge –no-ff hotfix-0.1.1 develop
git checkout master
git merge –no-ff hotfix-0.1.1 master
git tag “0.1.1″
git branch -d hotfix-0.1.1