This post probably should be required reading for people moving from Subversion, since Subversion repositories almost never have clean history. I define "clean" as a history with all changes isolated by self-contained commits, and no "oops I forgot this one file" junk.
My "unclean" peeve is when people prepare a git patch series with a separate commit for each file. If I can't apply the first M patches of your N patch series and have a usable tree, then you're doing it wrong.
Hmm, I disagree. I have no qualms about rebasing my own public repository, although I wouldn't want someone else to do that. This seems like it is "approved", as git has code to handle a pull after a history rewrite... so I am not worried about it.
There are few things more cumbersome than sending patches via email, especially when you have git.
"By three methods we may learn wisdom: First, by reflection, which is noblest; Second, by imitation, which is easiest; and third by experience, which is the bitterest" --Unknown