Git is a popular tool, definitely the most popular among those classified as DVCS. So then why do I dislike it so much? I’ll readily admit I’m a contrarian more often than not, but I also know that git is better than pretty much everything that came before it.

So why instead do I prefer Mercurial? I prefer bitbucket, tortoisehg, and hgflow.

Mercurial and git are so close in feature set that the differences are almost negligible. Git has a stash, Mercurial has the more powerful queues, both have rebase, both have Driessen, both are directed acyclic graphs, etc. Wouldn’t the tool with wider support be the better one to use in this case? Maybe.

But I really just like the idea of hg pull, hg update, hg merge, and hg commit all being separate commands. I like that repository synchronization (pull and push) is distinct from source control (update and commit).

What really bothers me about this state of affairs is Atlassian’s refusal to implement queues or something stash-like for mercurial in SourceTree, and tortoisehg not supporting hgflow in the ui. Users are unable to easily take advantage of these features, thus driving more people to git for no good reason.

Seriously though, the git user interface is awful. That and Microsoft deciding to implement support so haphazardly in Visual Studio will turn off quite a large number of older developers already use to SVN or TFS.

Everybody should just use mercurial. That way I can stop being contrary.