Currently, I am settling on GitFlow, which results in
- master (latest stable, can always be used in production)
- develop (all the new and shiny stuff is collected here)
- release-v1 (old stable, left there for fixing of old version)
- release-v2 (pre-master branch for release-finalization)
- feature-someFeature (work on some feature, usually locally)
- fix-someBug (fix a bug, usually locally)