I think the worst failure mode I've ever seen is one team that maintained a "git repository" for a collection of analysis scripts that was simply a directory on a shared drive. It was technically speaking initiated as a git repository, but practically speaking it wasn't used as one: rather, the directory contained zipped copies of the code timestamped with when they were modified. There were very few commits to be seen, and I honestly hesitated to try and branch from them in any meaningful way. Of course there was no command line interface or anything to be had, and the git GUI software they had available was muddled enough that it confused me. In this situation, yes, *technically* they were using git, but in any real sense this clearly wasn't the case.
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.
Yeah also people get into a mess and don’t understand the state of the repo. Like they’re organising files without ever running ls. If you ask these CLI fanatics for the solution they’ll say “you don’t need a GUI, just run git log --tree--oneline--decorate--all”… which is just a poor man’s GUI.
That’s a lot of words. I think the reasons are pretty simple:
The GUI thing is basically a religion.
I’ve mentored plenty of juniors that could barely commit+push.
Whenever they ask me for help to do anything remotely complicated the conversation is always the same.
+ you have to click here, then click there
- but how do I do it in the CLI though?
+ Idk, I barely use the CLI. I believe it’s
some git command. But you can easily do it in the GUI, it’s 2 clicks- <does the command> that didn’t work <wastes 20 minutes trying to make it work>
+ Fine, I’ll search for the command.
<5 mins later>
+ Here is the command
- that worked!
Every. Fucking. Time.
Yeah also people get into a mess and don’t understand the state of the repo. Like they’re organising files without ever running
ls. If you ask these CLI fanatics for the solution they’ll say “you don’t need a GUI, just rungit log --tree --oneline --decorate --all”… which is just a poor man’s GUI.+1 on the Git Graph extension. Love it as a daily driver.