I've just started to use git flow but IMHO the easiest way is to set next release as dev
branch and production releases as stage
branch and then e.g.: manually merge with master
branch (your real production).
In case you release version 1.2.0 to stage
and then find bugs in your release (4 hotfixes e.g.: in core CMS, feature1, feature3 and feature4) then you can always apply patches so for instance you can end up with version 1.2.4 and then finally merge it to production.
UPDATE: This scenario assumes that you do not have a roll-back mechanism so you are always adding commits to fix, release feature or anything else. If you do have a roll-back mechanism then you don't need to worry about your bugs in your production. Just when you discover error use roll-back to set-up previous working version. E.g: if you find bug in version 1.2.3
go back to version 1.2.2
. Fix bug, test on dev
then on stage
and push to production as version 1.2.4
. So your production will jump from 1.2.2
straight to 1.2.4
.