That's a lot of words. I think the reasons are pretty simple:
- Some people just don't care.
- The Git CLI is poorly designed e.g. the many different ways to delete something.
- Some Git concepts are very poorly named, e.g. the "index", "ours/theirs". This adds to the confusion.
- There are many Git GUIs but only a very small number of actually decent ones (if you're wondering: GitX, SourceGit, Git Extensions, and the Git Graph VSCode extension).
- There are a lot of idiots out there telling people not to use Git GUIs, when they are clearly the best way to learn how to use Git. Its easy to get into a mess if you can't see what you're doing.
- Git isn't actually as simple as us pros would like to think. The underlying model and even the implementation isn't too complex (I've written a Git client form scratch; not too hard apart from the lack of specs/docs). But you can easily get into a state where you're pulling from a remote and someone else has pushed to the same branch so you need to resolve that (oh btw don't do what Git tells you to!), and maybe it involves submodules too, and you basically need to fully understand Git's model and be pretty good at the awful CLI too to resolve it.
