I still hate how the raw cli interface with tons of switches forces me to learn git's internals and storage model. Git advocates usually tell me "you need to know to unleash the powers of git" but actually, I'd rather prefer not to know and regard it as an opaque tool.
Compared to svn or hg the cli feels crude and not well thought over either. There's commands that accept the full verb (add, diff, checkout, clone), others that accept an abbreviation (rm, mv), but no (remove, move). I can set that up using aliases, I know. But why do I have to? Then there's add, move and remove, but no copy (which is "cp <file>; git add <file>). I often find myself typing the wrong incantation because there's a mismatch in how the commands are named. In that respect svn really shines in comparison.
GitHub "won" because the developers were not only innovative but they listened to their user base. BitBucket developers have, so far, just scoffed at my requests for changes to features that should be fundamentally different.
For example, the issues system. When you first hit the issues list it sorts by most recent date created; if I want to see the most critical tickets (sorted by priority) I have to click on the priority column; but wait, that first sorts it as least important first (wtf?) so I have to click it AGAIN to get the highest priority tickets.
I put in two support tickets on the matter, one asking for the default when hitting the page to be sort by priority (most critical first) so I can see WHAT IS MOST CRITICAL THAT NEEDS TO GET DONE NOW. If not the default, give a settings option so that I can set what the default to sort by could be! Their response? "Create a bookmark" - yeah, that's what I've done but I shouldn't have to do that. It's little shit like this that irks me about bbucket vs GitHub.
The second ticket has to do with that silliness that is sorting least important first when you first click on the column sort... Le sigh.
I still use it though because I prefer mercurial to git.