So far I'm using the Git Workflow. I've seen a lot of documentation about it using the "Ideal happy world" solution, but not realistic scenarios.
Git Workflows is very straightforward: create a release branch from Develop and merge into master.
But what happens IF you have, let's say 10 commits in develop, and you want only 3 random commits to be released (the other 7 didn't pass the testing or are still being tested). As far as I see you have 2 options:
- Create a release branch from develop and revert the 7 unwanted commits
- Create a release branch from master and cherry-pick the 3 chosen commits from develop branch.
I haven't seen any good enough explanation for this.
I'm using the 1) approach but it gets hard when you have to revert many commits, and approach 2) gets hard when there are no commits to revert.
The way we use it: When the feature is approved and merged into Develop it gets deployed in QA environment, only successfully tested stories are moved into the release branch, Release branch is deployed into Production, if it successful it gets merged into Master.