I have "truly learned git" (including having written a clone for a school project) and still hate the CLI and conventional Git workflow. Why is checkout overloaded to mean "restore a file from the index" or "move to a different branch" or "move to a different commit?" Why can reset mean both "un-add a file" or "delete a commit?"
I am very happy that there are better frontends for git like Gitless or Facebook's Sapling. I also think their commands are more of a 1:1 mapping to "raw" git operations behind the scenes.