Master branch is public release code – each version on master is tagged with a semantic version number (https://semver.org/). Code in master works.
Release branch (if present) is temporary. Preparation for version release. (Or use develop)
Commits on develop are stable and should work but some unanticipated unexpected behaviour may be present.
Feature branches are temporary*. Commits on these may be broken/unstable.
Gitflow release process
Tests run on develop branch – before making a release, make sure that all tests are passing (can be run as a CI job).
(optional) Create an issue that describes what changes have been made since last release version. Make sure everyone agrees that behaviour is as expected. Link to passing tests.
Merge develop into master and tag with the version number.
Current
Workflow
Works well if:
Contributors are working in the same context, same goals
Communicate frequently
Or each individual is working on their own branch/version