Two branches, Master & Develop
This workflow uses two branches to record the history of the project. The master branch stores the official release history, and the develop branch is an integration branch for features. It's also convenient to tag all commits in the master branch with a version number.
- Develop contains the entire history
- Master contains releases tagged
Feature Branches
- Each feature branch is a fork of Develop
- Features are merged back to Develop
Releases
- When ready for a release, the fork develops into a release branch.
- This new release branch is only for doc updates and bug fixes, and creating this branch initiates a release cycle. (QC, BETA, Etc.)
- Once it's ready to ship, the release branch gets merged into the master and tagged with a version number.
- In addition, it should be merged back into develop, which may have progressed since the release was initiated.
- Once merged, the release branch will be deleted.
Hot Fix Branches
- Hotfix branches are a lot like release branches and feature branches, except they're based on master instead of develop.
- This is the only branch that should fork directly off of the master.
- As soon as the fix is complete, it should be merged into master and develop (or the current release branch), and the master should be tagged with an updated version number.
- Once merged, the hotfix branch is deleted.