For example: `git checkout` can change the contents of files without changing where you are in the DAG, change where you are in the DAG, and even create a new branch. In Mercurial you'd use three separate commands for these things: `hg revert`, `hg update`, and `hg branch`.
The problem with git's approach is this: making every command very flexible through options means that you need to document the interaction of all these options in the man pages. That makes the documentation for each command harder to read, especially when you're in the middle of trying to get something done with a project and just want to do something quickly.
For a real example, look at the help for the two SCMs' commands for changing the contents of a file:
$ (hg help revert) | wc -l
47
$ (git help checkout) | wc -l
276
Some might say: "But `git checkout` can do so much more than `hg revert`!" That's absolutely true. However, every time I want to look up how to revert file contents I need to wade through hundreds of irrelevant lines in git's documentation. When I'm using Mercurial I say "Well, I know I need to use `hg revert`, let's just look at those 47 lines of help and find out what exactly I need."When you combine the help for the equivalent Mercurial commands it's still more succinct than git's help, because splitting individual actions into different commands means you don't have to document interactions between options:
$ (hg help revert; hg help update; hg help branch) | wc -l
113
$ (git help checkout) | wc -l
276
TL;DR version: Git's decision to make its CLI's commands very flexible results in painful documentation, so I perfer Mercurial.