I may also rebase my work onto the latest head at the end (not to be confused with git HEAD).
And all of this with a very nice interface. It's always --interactive, not sometimes --patch and sometimes --interactive.
Mercurial was my first DCVS and I loved using it, but I only touched on the basic features. I stopped using it when I switched jobs and to become proficient with git. I'll have to give it another try with one of my side projects.
Git allows you to push commits to other people and then rewrite history, which is different
I knew that pushing a rewritten history was possible, but I can't think of any situation where I would ever want to do that.
http://michaeldehaan.net/post/116465000577/understanding-whe...
Is this really interesting for you that it took me 10 commits to do sO ? Even if one of the commits was just a "I have to switch an fix a bug and want to commit before switching to another branch" - commit ?
I think there is nothing wrong with rebasing and to merge commits before pusing them.
AFAIK rebase is the only operation that happily destroys your history without any --force or --hard option. It always disturbed me.
There is a legitimate usage of rebase though: you really want something removed from history. Like you accidentally committed a secret, inappropriate message or you just want to fix a typo in the last commit.
This is SUPREMELY valuable for OSS patch workflow and I absolutely love git for having it.