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.
Then, each of the environments have their own branch (org branch), which are actually the ones monitored by Copado Branch Management app in order to evaluate the level of discrepancy between orgs.
Every time there is a user story commit, Copado will merge that feature branch into the org's branch 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 app 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's 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. 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 destination org's branch, so user story commits finally reach the following stage.
Here is the diagram: