Unpopular opinion, but I find the value of having the actual surrounding context in which the code was developed more valuable than having a flat history.
Unpopular opinion, but I find the value of having the actual surrounding context in which the code was developed more valuable than having a flat history.
A non-linear commit history is much more difficult to run a bisect on which was enough to sell linear for me.
That's not to say each PR is one commit, if there are multiple distinct parts of a PR that could be cherry picked in a way that they make sense on their own they'd still be separate commits.
This thread is about squash merge, which converts the whole branch into a single commit.
But only if those commits are real atomic changes of code which compiles and not a series of 'oops', 'tests pass once again!' , 'forgot to commit this file' type inner-monologue type history.
And then there are shops where less technical authors are contributing solely via the GitHub WebUI. So you get a commits of the ilk 'Updated <Filename>' or ''Files added via upload'.