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

# Concepts

• 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.