GIT is almighty and allows you everything. But this also comes with great complexity and one can get easily lost on how to do things right with it. This is one of the very first blogs post that covers a full-blown branch, merge and release model and procedure using GIT. While there have been others before this is a one of the first that covers a complete view on what is going on. As it is not theoretical but only documents what they have been doing in every day work for while it is a highly adaptable way of handling this out of practice.
Thus getting widely adopted quickly and through that even more proven its case by added experience from further cases. Today is it a widely used procedure and always a good starting point if you don’t yet have a procedure yourself. It is also the basis of the git-flow extension though I highly recommend reading this blog posts non-the-less to understand what it is actually going on and what is the reasoning behind that (git flow imho abstracts away too much)