I thought it would be hard to use and confusing all the time.
Git
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Resources
Rules
- Follow programming.dev rules
- Be excellent to each other, no hostility towards users for any reason
- No spam of tools/companies/advertisements. It’s OK to post your own stuff part of the time, but the primary use of the community should not be self-promotion.
Git Logo by Jason Long is licensed under the Creative Commons Attribution 3.0 Unported License.
I don’t actually remember when I first learned Git. Maybe it was in a university lecture. I think my biggest struggles was learning how to resolve merge conflicts properly and efficient use of branching, but I never found any of the commands difficult to understand.
I tried to follow tutorials that use the command line. In hindsight that is terrible way to teach Git, which is fundamentally quite a visual thing.
It's like trying to teach people about filesystems only using cd
, ls
and pwd
instead of just showing them a file tree.
Actually it's even worse because Git's CLI is so notoriously awful.
Eventually I tried Sourcetree which made it all make sense. Though Sourcetree isn't a very good GUI, mainly due to being hella slow. I eventually switched to GitX which is probably the best GUI I've used so far and makes everything extremely clear and easy. Unfortunately Mac only.
I now mostly use the Git Graph VSCode extension which is excellent and integrates pretty well with VSCode. Unfortunately it has been abandoned by its author and they frustratingly included a license clause saying only they could release versions of it, so it's basically abandonware. But it still works so I'll figure out a replacement when I have to.
If you use the git command line (and I do) you should spam git log --graph
(usualy with --oneline
).
And for your filesystem example I sure do hope you use tree
!
you should spam git log --graph
Yeah... but that's just a poor man's GUI. Why use that when you can use a proper GUI? The only reason I can think of is if you happen to be in a situation where using a GUI is a bit of a pain (e.g. SSH).
It's a question of workflow. Git doesn't guide you (it's really workflow agnostic) and I find it easier to taillor CLI to fit my exact need, or use whatever was recently added (like worktrees a few years ago). I have yet to find a GUI/TUI that I'm not frustrated with at one point but everyone has its own preferences.
Wft isn't there just a nice clean git UI that tells you in human terms what you are doing.
Command line interfaces suck ass.