Question: The "*Master branch*" is for a product which is ready and can be downloaded by end-users.

But there are "*release branches*" - I have no ideas who these branches are for. Release for customers? For QA?

[Image showing the branches](http://www.flickr.com/photos/appleboy/5488984404/)

Answer: 
![simplified git workflow](https://i.stack.imgur.com/F00b8.png)

Once `develop` has acquired enough features for a release (or a predetermined release date is approaching), you fork a release branch off of develop. Creating this branch starts the next release cycle, **so no new features can be added after this point**.*Only bug fixes, documentation generation, and other release-oriented tasks should go in this branch(which includes testing also).* Once it's ready to ship, the release gets merged into master and tagged with a version number. In addition, it should be **merged back** into develop, which may have progressed since the release was initiated.

Using a dedicated branch to prepare releases makes it possible for one team to polish the current release while another team continues working on features for the next release. It also creates well-defined phases of development (e.g., it's easy to say, “this week we're preparing for version 4.0” and to actually see it in the structure of the repository).

More info [here](https://www.atlassian.com/git/workflows#!workflow-gitflow) for branches
As explained in the original [post by V.Driessen](http://nvie.com/posts/a-successful-git-branching-model/) :

**Master** is a permanent branch which always reflects a production-ready state. So yes, it is for ready-product which can be downloaded on the market by user.

**Release** is a temporal supporting branch to support preparation of a new production release. This means mainly bug fixing, documentation, etc as pointed out by minas.