Right on. Git is good at what it does, but its CLI is too low-level. It feels more like an assembly language than an end-user language, and a haphazard one at that.
There are wrappers that make it much more approachable. IntelliJ’s Git frontend, for example, is pretty nice.
Git is a cli software. If you find yourself repeating a set of commands, what you should do is abstract it using an alias or a script. And you will have you own nice interface.
Not really. The basic entity of git is the commit and git checkout is meant to restore the working tree to the state when the commit has been created. It may act on the whole tree, a specific part and if no commit has been specified, it uses the index as the source. And with branches being just pointers to commits, it's quite easy to see where the range of options comes from.
Git has its model for version control and it's something that most tutorials don't explain. The CLI is giving you maximum control over this model. For daily operations, it's quite easy to wrap it in a much amenable interface.
IntelliJ's Git frontend makes the Git command line look like a relic for people who would rather type "outlook forward email" than use a GUI. I was disappointed they gave up their attempt to make it a standalone app.
There are wrappers that make it much more approachable. IntelliJ’s Git frontend, for example, is pretty nice.