I've seen a few internal git based projects go a step farther.. feature branch from master, with a per-task branch that's short lived.. branch from feature branch, work on your changes, usually committing local, and/or pushing to internal repo. When ready to apply to feature branch, (optionally rebase) and do a pull request... at the pull request comes peer review (a couple +1's) and you merge up... regular merges in from master, and push to master == CD release.
For smaller modules, the branch is typically PR'd straight to master for that project (with review). It's worked very well, and I have to say that working with multiple local and remote branches in git has been quite a bit nicer than with any other source control I've used, including SVN (of course getting used to git took some time, and git extensions helped with that learning curve).