GitFlow: what is difference between release and master branches?

Once all the features you want to have in your release are in develop, instead of "locking" develop to any new commit, you create the relase branch that will contains all the feature expected in your next release (and not in master since your whole release should be tested and would probably have some bugfix...).

  • In this branch you have only bug fixes, documentation etc... but no new feature
  • your develop branch is not locked up, so new features for the next release can still be commited/push on develop and tested.
  • release branch is perfect to be deployed on staging/pre-prod environment and let QA test your release.
  • Once release branch is stable, you can merge it into master and go to prod. Master should always be stable and steady (if not you make hotfix).

You can have a look at these links for further explanations:

https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow http://nvie.com/posts/a-successful-git-branching-model/#feature-branches


The difference is in goals and process. A release branch is usually created when you are preparing for an upcoming release. When all your feature branches which are supposed to be released have already been merged to develop branch you create release branch off develop branch and commit only bug fixes or some configuration changes to it. In other words you try to make it as stable as it's possible. When hopefully release branch is stable enough you merge it back to develop and master branches. The purpose of master branch is to always have the latest stable version of the project which can be deployed to production environment. You never commit directly to master branch, only merge to it from either release or hotfix branches. It is also possible to configure CI/CD tools to deploy to production on any update in master branch.

Tags:

Git

Git Flow