I am applying the branching model that @nvie describes in his article . With one change; I use the branch stagingwhere I test and create the preliminary releases before they are merged into master.
So, I have one develop -> staging -> master. Where changes from developare combined in staging(for example 0.1.0-pre), and then if all the good merged with master(in this case, how 0.1.0).
My network diagram for the next workflow is as follows:

, , develop , staging. , develop, develop staging staging master ( ).
, / git, develop -> staging -> master?