> Latter commits overwrite work that was done in earlier commits and the story breaks.
> Some people prefer this, as it helps git bisect work better. Debuggability versus reviewer convenience is the tradeoff, I guess.
Ideally we would have a VCS that made ergonomic to store both history-as-it-happened for some purposes, and the cleaned up, squashed and rebased history for other purposes, ensuring they match
I think that version control has reached a point where the next major evolutionary steps will be based on making history totally shared and immutable with history edits themselves being non-destructive versioned operations that can be browsed as higher order history.
Jj could do that; it stores an evolog of each change, but currently that's kept local
Force --no-ff merges in git. That's pretty much what you want.
Just squash all the PR commits into one when it gets merged to main or whatever your main branch is.
You can revisit the original PR to see the individual commits if you really want.