I'm using this model in my team:
Today my project stats is following:
- The stable version is running in production using master branch
- We developed new functionalities that need to be tested before production, so we have a release branch be testing under SIT Environment. This new functionalities just can be merged with master after all tests in SIT Environment.
The problem: The Product Owner requested a new field in a Table in Production. So the team suggest two solutions:
Create a hotfix branch from master , add the new field and deploy to a Test Environment. This hotfix can wait months until merge with master, because after test pass we need wait the Product Owner say that can go to production because this field depends on another system changes.
Create a feature branch from develop and add this new field and deploy to a Test Environment. I think this is worst solution because i have things in develop that can't be merged to master, so i will need a cherry-pick to pick-up only desired changed from release to master. Remember that team is validating others functionalities in SIT Environment (release branch).