- Developer creates a new branch for every bug-fix or feature
- Feature branch is always created from master
- Developer watches master branch for changes. If another team member updates the master, she updates feature branch too.
- Feature branches are updated using rebase, not by merging
- Developer deploys the feature branch for demo/QA
- Another team member reviews code in the feature branch
- After demo and review passes, developer squash-merges the feature branch in her master, and pushes to the origin master
- For production-deployment, developer sets a tag on the origin/master, and deploys using the tag