TIL (actually yesterday but whatever): if you don't want to rewrite git history all the time when working on feature branch, but want to have functionalities well organised into commits you can do git commit --fixup<parent-hash> and that will automatically mark commit to be merged with the parent when you do interactive rebase.
lastly every time I start to think git is shitty vcs I start to look around and realise I was just holding it wrong
We are in agreement... I'd go further to say rebase-push (NOT force-push) ought to be a daily-driver. Specifically, I use gerrit code review's rebase-push-merge workflow.
I basically never rebase (especially if the branch is already pushed). My only exception is for CI-related stuff, that tends to accumulate commits that do nothing to the code and it's kind of hard to get it right...
Yeah, that's a github problem. Rebasing is the core of my development workflow with git, and it ought to be so for everybody... That's how one constructs a codebase with high-quality atomic commits.