Do you use some GUI, TUI, terminal commands, plugins for other software?
Ideally, I want to find a cross-platform GUI app, preferably a FOSS one, and with as less overhead as possible, e.g. no Electron.
The git CLI. GUIs don’t get anywhere near what it can do, and the CLI is scriptable and can easily interop with other programs.
Performing a diff would like a word.
Not sure what you’re saying. Are you saying you need GUIs for diffs? Because that couldn’t be further from the truth. Unified diff itself is highly underrated (and my preferred form for many reasons), but even if you wanted side-by-side diffs, there are many ways of accomplishing that without a GUI. That’s the entire point of
git difftool.What I’m saying is that performing a diff via command line isn’t something that brings as much utility as using a GUI. You can do it, but a major part of this utility is the visual aspect, layout, navigation. CLI tools don’t come close to what I want. Isn’t difftool meant to be used in GUI form? Am I missing something here?
The default
difftoolisvimdiff, which is not a GUI program. But no, the point ofdifftoolis to iterate through files to diff and pass the different versions to an external program. There are many external CLI and TUI diffing programs. The point, though, is that the git CLI is still the driver of everything and you still have the full range of options available togit diff, rather than some GUI program being the driver, which are universally limited in what they can do.Personally, I load regular
git diffoutput into a vim buffer via:read. Unified diff is largely superior to side by side diffs, IMO, because most of the time, changes in one file are accompanied by changes in a number of other files, so it’s useful to be able to quickly follow a thread of changed calls or whatnot. And with unified diff output, you can see and manipulate hunks directly.
Regular git CLI, with like 15 years of aliases
Most commonly used alias for me is gti=“git”…
Raw git. I get lost everytime I try to use any git front end, tui or gui.
i use the standard git cli mostly, and sometimes the magit package for emacs (but only when i am also working in emacs already)
https://github.com/sourcegit-scm/sourcegit or command line.
Its kinda like gitkraken.
One more vote for SourceGit. It is very feature-rich and intuitive.
I found this one recently which is really good:
https://github.com/sourcegit-scm/sourcegit
Much better than most of the standalone Git GUIs, even the commercial ones.
However I don’t actually use it, because I use VSCode and there’s a great extensions called
Git Graphthat integrates nicely into it. It is abandoned unfortunately but it still works fine so I still use it.Here’s my rating of all the Git GUIs I’ve tried (that I remember):
- SourceTree: works ok but just so incredibly slow.
- GitKraken, SmartGit, Tower, Sublime Merge: Commercial and I don’t like the UX of any of these.
- Git Extensions: This one is actually really good. Terrible name though. Also kind of Windows-only.
- GitX: This is also really good but unfortunately it’s one of those pieces of software that has forked into dozens of half maintained versions that you’ll need to spend hours in phpBB forums figuring out which one to use (like TomatoUSB). Also Mac only.
I never tried Magit because TUIs are dumb.
Also don’t listen to anyone that says “just use the CLI”. It’s okay once you’ve learnt how git works, but even then you’re still going to want a way to view the commit graph. Learning Git without a GUI is needlessly masochistic. Once you have learnt it you can start mixing it up with the CLI.
git log --all --graphYes if you don’t get a real GUI you’ll end up using this poor-man’s imitation a lot.
Fair enough. I don’t tend to use it all that much. But it is there. I tend to find I don’t really need to see the graph all that much. Maybe because I’m mostly working in small teams. It’s just not that important to my understanding of what’s going on.
A graph view is largely superfluous 99% of the time.
I prefer pen and paper.
When that’s unavailable, command line is fine.
pen and paper is decentralized storage too, but the push and fetch sync protocols are a lot of work
i use git. got a tree alias a tree-like log. and an amend alias to add changes to the prev comit to keep the message
- lazygit: a TUI for git. This is my day to day UI for staging, committing, interactive rebases. I have delta configured for diffs in lazygit.
- neovim (nvimdiff): for diffing, and conflict resolution.
- vscode/neovim: I whatever functionally my editor had (or some plugins for neovim) for live changes as I work on code.
lazygit, VSCode or just git (in that order of preference).
Sublime Merge is what I use, mostly for dealing with merge conflicts. For more complex operations I just do it in the terminal, even though I’m sure it supports way more features than I use it for.
It’s not FOSS, but it’s also not Electron.
gitgud :PI use the CLI mostly.
It gives me confidence that I am not doing something unknowingly.In some cases, I prefer GUI tools:
- For
blame, I prefer what Qt Creator provides- Although it could have been better
- For
graph, the default CLI one is not pretty enough and honestly doesn’t help as a graph. So I go with GUI stuff- there are quite a few alternatives available that make it much faster to grasp on sight
- For
I’ve been loving Jujutsu VCS. It’s a terminal app, works on all 3 major desktop OSes, and makes it so easy to manage efforts across multiple branches.
Also,
jj undois like a gift from the gods.sourcegit.









