`merge --squash` generates a nice linear history in the main branch and other developers don't need to worry about rebasing their feature branches or keeping them super clean. That's great.
However, `merge --squash` loses its association with that feature branch, which is annoying. You also don't get to see any of the history of what happened in that branch, which can sometimes be really useful if there ends up being a bug that you want to bisect. You don't have any of the original developers individual steps, since it all comes in as a big, unassociated chunk.
Comments
`merge --squash` generates a nice linear history in the main branch and other developers don't need to worry about rebasing their feature branches or keeping them super clean. That's great.
However, `merge --squash` loses its association with that feature branch, which is annoying. You also don't get to see any of the history of what happened in that branch, which can sometimes be really useful if there ends up being a bug that you want to bisect. You don't have any of the original developers individual steps, since it all comes in as a big, unassociated chunk.