To be fair, most of the its difficulty is realized when you're stuck with a teammate rewriting history. Who, much like anyone anyone doing the same, hasn't bothered reading a book explaining things.
If you push rewritten history to master, you're a git.
Conclusion: learn your tools.
The thing is, we could have done better (and have been) since before git even existed.
It's not my favourite process, but...
Squashed commits are strictly worse than plain, non-fast-forwarded merges from rebased branches.
It's a recipe for disaster.
Unless you mean squashing commits, which I don't consider rewriting history, just a retelling of the fact. Still, it's something one can only do very sporadically, or at known periods of time. I
'm sure others would be more pedantic about it and this wasn't clear above.
But GH's PR process is broken anyways. I miss Gerritt.