Git Flow is a strategy for working with Git that optimises for parallel delivery of features.


  • Branches are categorised based on usage:
    • master is the branch used for production releases.
    • develop contains stable features for the next release, and is branched from master.
    • features/* branch from develop. These exist concurrently, and are integrated back into develop when stable. Features integrated into the develop branch must be merged back into feature branches.
    • release/* branches branch from develop, and are used for stabilising releases: bug fixes can be checked into these branches. These should be merged back into develop, where they'll trickle down to feature branches.
    • hotfix/* branches are short lived, existing only to branch from master during development of a fix. They should be removed once merged back into master. From master, they should be merged into develop.
  • Tags are taken whenever changes are merged to master. These are a good candidate for semantic versioning.