Copado Branching Strategy
When a developer commits a change into their user story, Copado creates a feature branch for that user story. All the following commits in the same user story will be collected in the feature branch, which is taken out of master, so no 'work in progress' or other features are carried on with this feature branch.
Every time there is a user story commit, Copado merges that feature branch into the branch of the org where the developer was working, so that the org is kept in sync with the metadata in the branch. Besides, you can monitor in the Copado Branch Management application page the differences between the current stage and the following one, and the user story feature branches get validated from both Git and Salesforce perspectives.
When you are running a promotion in Copado, Copado creates a promotion branch out of the destination branch (this is also known as 'release branch'). This is an exact copy of the destination into which all the user stories included in the promotion will be merged. By doing this, we respect the original contents of the destination, while we add new contributions of developers to it; and we check if the user story feature branches can be merged all together.
If the merge has no conflicts or they are resolved automatically, then the deployment to destination takes place, and after a successful deployment, the promotion branch gets merged into the branch of the destination org, so user story commits finally reach the following stage.
Here is the diagram: