Single commands do many different things, options are inconsistent, e.g. -n does one thing for one command, and a different thing for others, lots of common tasks require complex sequences of commands, etc.
It's pretty telling that there have been multiple attempts to write a saner CLI for Git.
It's pretty telling that there have been multiple attempts to write a saner CLI for Git.