I follow a workflow similar to Git Flow with some tweaking. Here are some high level built points.
masterbranch should hold production ready code, each commit should ideally be tagged with a version- main development show happen on
developbranch - all new self contained features should be developed in there own branch prefixes with
feature/that are cut fromdevelop - all major features that might require multiple branches to complete should be worked from a branch prefixed with
major/feature-that are cut ofdevelop-- all features for a major branch should be prefixed withmajor/that are cut from the associatedmajor/feature-branch - all
feature/andmajor/branch should be merged back into the branch they were cut from and then deleted - when
develophas all the features needed for the next release, a branch should be cut fromdevelopwith the prefixrelease/ - all
release/branches should be merged intomasteranddevelopand then deleted - all hotfix branches should be prefixed with
hotfix/that are cut frommaster - all
hotfix/branches should be merged back intomasteranddevelop