If I consider that all commits of the branch are good (well named, concerns correctly separated) then I use the Rebase and merge
option.
All commits are merge into develop
as is without creating a merge commit (they are put just after the last commit in develop
).
In the other hand, if there are "Work in progress" (WIP) commits in the branch, or if I consider that all commits refer to the same fix/feature and should be grouped, I use the Squash and merge
option.
All commits are grouped in one commit and put in develop
(still without creating a merge commit).
The commit will default take the name of the pull-request but you can change it if needed.
Generaly, I consider that developers can do what they want in their fix/feature branches but have to name clearly and explicitly their pull-requests. It's the guy who merge the branch who have to take care about the commit naming convention.
I use the Create a merge commit
but I change the name of the merge commit with, for exemple, v1.10.0 (12/Jun/18)
.
I use the Create a merge commit
and I change the name of the merge commit with Merge branch master into develop
.