@Luca: If it was called “revert”, I wouldn’t mind having it throw away my local modifications. In fact I’d expect it! But the name is important — “checkout” just doesn’t sound like a destructive command. “checkout” is not destructive in cvs or svn. And it also has a lot of non-destructive uses, like switching branches. It’s just a UI minefield to have this one particular mode of the “checkout” command act like “revert”.
I’m not too inspired to report this stuff to the Git developers, because my biggest gripes would require major changes to address (like renaming core commands). There’s no way they’d be receptive to that. Like I said, what I think Git’s UI needs is a revolutionary, not an evolutionary change.
@Dave: Your point is taken about being confident about the merge. But I like the Perforce model here (can’t remember if CVS and SVN do this too), where it prompts you for each file that has conflicting changes, and asks if you want to merge right now or not. If you get cold feed about it, you can always decline to do the merge, then do the stash+apply thing manually. But going ahead with the merge (especially if the changes don’t have conflicts) is nearly always what I want.
Good suggestion about git-mergetool — I should use that instead.