- Fake git!
- Sublime merge
- git gui
- Cycligent Git Horizon
- VS Code VCS integration
- XCode git integration
- Working Copy
- Pocket Git
- Git repository management servers
- Merge tools
Git is remarkable for how smooth, fast, and tiny it is as a command-line application. Because of some as-yet unarticulated conservation law, this means that all the GUIs for it are clunky, slow, and bloated. To go from the magically simple, speedy exuberance of the git command-line client, to one with better visualisation and more discoverable UX, you must sacrifice time and disk space upon the altar of bloat.
Anyway, there are is a long list, and also a longer list of alternative git GUIs; but the [extremely long list on Wikipedia is the most current, which is helpful in this rapidly moving area. Also it allows filtering by OS etc. If you have an afternoon to burn you could start there.
I’ve used… some. Too many. There are too many, although not so many that are good for my purpose.
I would personally like one that was comprehensible and attractive, because a major use of these things is teaching student and on-boarding colleagues and everything goes so much faster if you have a nice interactive visualisation, and it is shiny and colourful. To that end, it should ideally ease the use of git without hiding the details of the git command-line, because in our line of work you will always need the command-line eventually.
HT Alex Whan for mentioning this to me.
Learn Git Branching is not really a git GUI, but a learning tool with excellent fake toy examples of what git is, with exercises and essays baked in.
⭐️⭐️⭐️⭐️ Looks pretty, makes you smarter, Mac/Linux/Windows
Subline merge, by the creators of sublime text, is slick. Its special feature is that it uses a command palette approach, like sublime text or vs code. It also constructs commands lines for you, making it transparent what the softtware is doing for you, rather than magical. Its weak suit is the visualisation, which chooses AFAICT an arbitrary single branch of history to show you, even in complicated merge trees, which is not satisfactory when maintaining forks.
I use it for work. USD99 for 3 years of updates.
⭐️⭐️⭐️⭐️ looks great and works even on Linux
gitkraken seems sleek,
and runs on Linux, macOS and Windows.
It has pretty good visualisation of the commit graph and only displays the essential
stuff in the interface, which is nice, although occasionally laborious if you are doing something non-essential.
It uses gigantic amounts of RAM.
Interactive rebase support is
My major qualm with this product is pedagogical.
Although the graphical wow-factor is great at luring people in and the visualisations are well-done, (a plus) the relationship to the git command line is opaque, and it is hard to learn the commands that it invokes.
(Closed-source, USD60/yr, free for non-commercial use.)
⭐️⭐️⭐️⭐️❓ Looks pretty, Mac/Windows
Fork looks beautiful. I have not used it enough to give it a real review. At USD50 the cheapest option here. The developers are a married couple, which I find charming.
⭐️⭐️⭐️⭐️ Fast, simple, under-documented, effective, unsightly.
gitk commands invoke a git gui of sorts, which is free, simple and
functional, and OMG SO EYE-WATERINGLY UGLY.
Traditionally this has been built-in but on recent OSes I have needed to install it separately.
However, it is worth mentioning because it’s also fast, and easy for at least some tasks, and mysteriously rarely mentioned.
git gui commits for you and is not IMO useful.
gitk however is useful.
It graphs git revision history pretty well, and thus provides probably 60% of the git gui services I desire.
QGit is similar.
Some modern systems exclude git-gui per default, but you can install it easily enough.
brew install git-gui
⭐️⭐️⭐️ Overbusy UI, works on Linux too.
is less well-known. It has more features than e.g. Gitkraken, but uglier UI, more like
Closed-source, USD79/yr for updates, free for non-commercial use.
It shows you too much information per default (do I really need the full text of my last git commit on constant display?) but if you can focus through the information overload
it is functional — supports pull-requests, git flow and such.
The interface can be configured to be less busy if I close some of the information windows.
However, those detailsy outlined icons and opt-out information overload will continue to fill me with the same faint nagging anxiety that I get when stuck on some ambiguously spammy mailing list that I cannot work out how to unsubscribe from.
⭐⭐️⭐️⭐️ Simple, elegant, open-source, but mac-only.
Pierre-Olivier Latour’s Gitup is simple and has different graph visualisation than the competitors. to me this feels like a thoughtful attempt to escape the herd mentality of git GUIs without being confusing. Its main weakness is that it is bad at showing the content of commits. With a bit more polish this would be amazing.
Cycligent Git Horizon
⭐️⭐️⭐️ Proudly weird, details-oriented, cross-platform.
Git Horizon is a web technology tool which runs on the desktop. User interface philosophy is to represent the source tree as a state machine, which is a… singular choice. Depending on your personality type you might regard the resulting UI as promoting either 1) Mindfulness or 2) Obsessive-compulsive disorder. For me the main friction point was that it doesn’t support merge resolution in-app which means it’s going to be too hard to explain to my colleagues. The state machine visualisation… I cannot decide if it is helpful or not. Closed source, free. Macos/Windows/Linux.
VS Code VCS integration
⭐️⭐️⭐️ Simple, maybe already installed, free, not quite as easy as a specialised git client but fine.
VS Code includes version control integration. It is competently executed and makes some things easy. It does not have the luxurious spacious feel of a specialised git client when it is crammed into the text editor panes — so for example it is not wonderful at viewing revision history and so on. On the other hand, the integrated experience is useful, and the in-editor visualisation of updates is very intuitive.
In practice I like having this option, but when it comes to commits, I 100% of the time find my muscle memory plants me in the console entering git commands there, rather than using the git commands that this provides me.
View a Git Graph of your repository in Visual Studio Code, and easily perform Git actions from the graph.
This is kind of what I actually want from git and accordingly I am auditioning it.
Git History provides a history view, which is sufficient to make the git integration of VS look like a real git GUI. Auditioning
Supplements the VS Code built-in git version control with a shinier, more animated blame console so you can see who did what.
Not a clear value-add for me.
It comes with default keybaord mappings which I personally find irritating, claiming all the
Alt-punctuation keyboard shortcuts, locking you out of all the macos default smart-quotes.
If you are keen to use this, be aware that
gitlens.currentLine.enabled=true is one of the setting that triggers the
annoying wordwrap horizontal scrolling bug.
⭐️ OK UI but it intermittently freezes your machine and corrupts data.
Somewhere between Smartgit and Gitkraken in usability is SourceTree (closed source, free). This is Atlassian’s git client for Windows and macOS. Like all the other fancy contenders it uses gigantic amounts of RAM. Memory usage and responsiveness can be improved by restarting it every hour or two, which is slightly disconcerting but not a showstopper.
It also supports mercurial, which is nice if increasingly irrelevant. It has excellent interactive rebase support. But it often crashes half way through said rebase.
On macOS it leaks file handles, which they claim is an upstream macOS bug, and while I do believe them that Apple has done a bad thing, the developer’s management of this issue is also a bad thing. Since that bug dates to 2011 clearly most other developers on the macOS platform have found more efficacious workarounds than blaming someone else via snarky links to bug trackers then giving up. Atlassian “solving” their clients’ problems by complaining and buck-passing might work if this bug were an amusing cosmetic quirk, but in fact, the side-effects of said bug can include, in my own experience, significant data loss and file corruption. I do not merely mean in SourceTree. This app destroys random data, when your whole system goes down the sinkhole of file handle exhaustion. Who would leave a bug in their software that destroys client data and brings down their systems unfixed for decadal time scales? Someone who you should not trust. This is a garbage product.
There are other ancient and yet irritating cosmetic quirks such as ignoring remote repo ordering, which as of 2019 was unfixed since 2011.
Despite its hefty corporate sponsor, this is a hobbyist project and inappropriate for professional use.
⭐️⭐️⭐️ Fast, simple, under-documented, tedious to install.
tig is a console-mode git GUI. It is certainly small.
Tower has been around for a while I think but I completely forgot it. Maybe it is ok? Mac/Windows.
Gitblade is a GUI which has less features than some (interactive rebase is by editing text files) but seems to do the important stuff.
USD20/year? (month? Unclear).
There is a free version, but that is too minimalistic to solve actual non-trivial problems.
If you just need to visualise the code versions, just run
git gui for the basic visualisation.
XCode git integration
Unlikely to arise for me.
RabbitVCS integrates git (and also SVN) into Linux file managers. Looks OK, although development activity is very low.
On GNOME desktops for example, it can be installed in the following fashion:
sudo apt install rabbitvcs-nautilus
Not really a git gui, but sometimes you want to visualise some other git statistics. Here is a tool for that.
It’s not wildly actively maintained; I wonder if there are others?
Similar to RabbitVCS but for Windows. TBC
The only iOS client. Seems fine.
Pocket Git works on Android.
git-cola is open-source, in python. Haven’t used.
giggle (open-source, Linux/GTK only) seems to be purely a repository viewer, but given how badly that is generally done this plus git CLI might be a sweet combination.
Also handy. See merge tools.