For the git workflow, as presented in [1]:
feature: All features / new functions / major refactorings are done infeaturebranches, which branch off and are merged back into thedevelopbranch (usually after some kind of peer review).release: When enough features have accumulated or the next release time frame comes near, a newreleasebranch is branched offdevelop. It is solely dedicated to testing/bug fixing and any cleanup necessary (e.g. changing some path names, different default values for instrumentation etc.).masterOnce the QA is satisfied with the quality, thereleasebranch is merged intomaster(and also back todevelop). This is then what is shipped/used by the customers.hotfixIf a major problem is found after release, the fix is developed in ahotfixbranch, that is branched off the master. Those are the only branches that will ever branch off of master.- Note: Any commit in
masteris a merge commit (either from areleaseor ahotfixbranch) and represents a new release that is shipped to the customer.
Please be aware that this model is mainly meant for a) big software projects that follow b) classic release versioning and c) have a separate QA team. Many popular repositories on GitHub follow a simpler model.