Keep calm and continue rebasing
gist.github.com
gist.github.com
There's nothing wrong with, say, creating three local commits on master, "rebase -i"ing them into one commit, and then pushing.
The author has completely missed the point of what can and can't be rebased.
In this workflow there is no pushing to master because you never work on master. So there is no reason to ever rebase master. Master is always assumed to be published history.
I'm assuming that you have someone else apart from you sync'ing with your master. But even if you know that nobody else uses your software (so far), I would still recommend, as a good practice, to stay away from rebasing master.
Work on feature branches, rebase them, and merge them. Once in master, you don't rebase anymore.
However if it's a small feature and your commit message is well-formed and comprehensive (ie. 50-char top line and then paragraphs of description below) then I don't see a problem squashing a few commits together.
Second, makes no sense to merge, consciously, a bug into master, specially if it's known and fixed already.
I think focusing on committing green test states often leads to faster development and more focused thinking, and I'd prefer to see this approach represented in the final commits rather than getting in the habit of squashing days and days of work into single mammoth commits.
It's not about squashing together the entire history of development.