I think squash is what most workflows and teams actually want. Rebase doesn’t scale well with the team size and merge makes rollbacks somewhat unwieldy and history messy.
My team uses squash + rebase. We wanted to have a linear clean commit history and ability to rollback. But in a team of 8 When 2 pull requests are generated at the same time and if I approve the oldest first then latest needs to rebase again as the history has changed. We solve this by notifying the team that pr is generated or approved. But its not scalable. Is there any solution for this?
I say just merge it in and stop worrying about it so much.
Squash + Merge is better for the vast majority of developers who put garbage commit messages in their feature branches.