The key for our workflow now is (imo) the following settings in gitlab/repository/settings/Merge Requests:
- Merge method: Merge commit with semi-linear history.
You want to use this one because it forces you that before a merge into master, your branch contains the latest master commit. This helps with ordering the commit history in intellij :). - Squash commits when merging: Allow
Some branches dont need to have the history of all the commits, so the branch developer may chose this option in the merge request. It is unchecked by default, but the dev has the option to use it. Use your judgement. - Merge commit message template:
Merge branch '%{source_branch}' into '%{target_branch}'