Git cheat sheets are a dime-a-dozen but I think this one is awfully concise for its scope.
- Visually covers branching (WITH the commands – rebasing the current branch can be confusing for the unfamiliar)
- Covers reflog
- Literally almost identical to how I use git (most sheets are either Too Much or Too Little)
The lengths Ppl will go to in order to not use a GUI… I haven’t written a git command in a terminal in years.
Learnt how it works, played around with it then used different GUI tools for it.
My personal experience is most people who are using git with a GUI are the same people who are asking my help to git-fu their git-problems…
Most GUIs only offer a subset of the git functionalities and hide what’s really going on by obscuring gitshell with “their workflow”.
In all cases, use what you like; some people like the shell. Cheatsheets are normally only for learning purposes and usually don’t stick for long, it’s not an end game thing…
GUI users = low skill ✅
Majority GUI a weak subset and of little use ✅
Elitism ✅
Of course, this is all couched in “use what you like”, and top it off with a general sentiment of how this post is all but useless.
If someone has to ask you for your git fu help the problem isn’t GUI use it’s the incompetence and/or inability to solve it yourself. Implying a strong correlation of the two is where I take issue.
My personal experience? A built in GUI saves you so much time like the one in JetBrains IntelliJ, if I need something more use case oriented that is more than the core fn (intelliJ’s does not simply include fetch/push/pull, but much more including everything in the graphic) then I click terminal tab and do what I need. Similarly the git tree provides an immediate view and context of the branches, changes, tags etc.
It’s almost like filtering people into GUI and CLI boxes doesn’t really work.
I think you’re making a lot of misinterpretation; but that’s up to you…
But, just so that I can understand correctly… When you’re saying: “if I need something more […] I click terminal tab”
That “terminal tab” of yours, it’s a CLI isn’t it?
I’ve been using TortoiseGit since the beginning, and it covers everything I need. Including advanced use cases. I can access almost all functionality from the log view, which is very nice.
I’ve tried a few other GUIs, but they were never able to reach parity to that for me. As you say, most offer only a subset of functionalities. Most of the time I even found the main advantage of GUIs in general, a visual log, inferior to TortoiseGit.
GitButler looks interesting for its new set of functionalities, new approaches. Unfortunately, it doesn’t integrate well on Windows yet. Asking for my key password on every fetch and push is not an acceptable workflow to me.
I like the terminal because:
- It’s the same everywhere. You don’t lose knowledge by switching to a company that has a different git client.
- You know what’s going on, mostly. Most clients will assume you want to do things one way and do it that way for you, especially when it comes to fetching/pulling/merging. I’d rather go through all the steps in the terminal myself so I can assure myself that I won’t be reliving various past broken merge traumas.
- If you like the terminal generally, you’re probably also doing other stuff there anyway. So you can get used to running whatever commands to test, lint, push, etc. without switching windows or even taking your hands off the keyboard and it becomes muscle memory.
I went from GUI to terminal and I’ll never go back. Especially with interactive add, git add -i
The only time I see a rebase fail is due to a conflict. Which can be aborted with git rebase --abort
no need for reflogs unless you really mess things up.
Maybe you resolved the conflict in the wrong way and want to restart after finishing the rebase.
I’ll admit that in 10 years using git, I don’t think I’ve ever used reflog once.
It can be nice when you successfully do a rebase (after resolving conflicts), but change your mind about the resolution and want to redo it.
Doesn’t come up that much, but it’s been handy once or twice, for me. It’s also just nice security: no matter how I edit commits, I can always go back if I need to.
git has 17 million options
proof needed /s
I wonder how many it actually is.
According to tab autocomplete…
$ git
zsh: do you wish to see all 141 possibilities (141 lines)?
But what about the sub options?
$ git clone https://github.com/git/git
$ cd git/builtin
# looking through source, options seem to be declared by OPT
# except for if statements, OPT_END, bug checks, etc.
$ grep -R OPT_ | grep --invert-match --count -E \
"OPT_END|BUG_ON_OPT|if |PARSE_OPT|;$|struct|#define"
1517
Maybe 1500 or so?
edit: Indeed, maybe this number is too low. git show
has a huge amount of possibilities on its own, though some may be duplicates and rewords of others.
$ git show --
zsh: do you wish to see all 489 possibilities (163 lines)?
$ man git-show | col -b | grep -E "^ -" --count
98
An attempt at naively parsing the manpages gives a larger number.
$ man $(find /usr/share/man -name "git*") \
| col -b | grep -E "^ -" -c
1849
Numbers all over the place. I dunno.
My ideal workflow: make the smallest, fastest possible PRs so there’s no tomfoolery.