I’ve had several colleagues recommend an approach to managing development and release branches using git from Vincent Driessen in his blog post A Successful Git Branching Model.
I’ve been using it myself a few weeks myself (though admittedly not on a release system) and it feels correct to me. It is similar to approaches I’ve used in the past with CVS and SVN. The approach is not particular novel or remarkable necessarily, but the post is very detailed and very well explained, to the the point it’s a great thing to point to as a standard process. I plan to use it on all my production projects.
There is also a project on github called git-flow that provides a high-level set of operations to mimic this workflow. It is described in the blog post Why aren’t you using git-flow from Jeff Kreeftmeijer. I have’n used it myself yet.