Comment by Vampiero
It seems painfully obvious to me that local and remote commits serve different purposes. Local commits are a way to create checkpoints when everything compiles and works and you can move on to the next step. That way you can stash your changes and go back to a working state when you screw things up. Then, before you push those changes, you reset them and split them into proper commits. That way the history is all nice and clean on the remote and it's not just a bunch of "wip"s.
Or you can just squash-merge your PRs and reap both benefits.
I have no pride. I push my dumb commits that chronical my weird journey full of sub-junior mistakes to get to the final state.