Git GUIs



This octopus is, puzzlingly, missing its mouth. I am not sure whether that makes it less terrifying, or more. But the inconsistency is reminiscent of Git itself and its weirdo naming conventions.

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 git command-line 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 alternatives. 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.

Fake git!

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.

Sublime merge

⭐️⭐️⭐️⭐️ 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 about what it 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.

Gitkraken

⭐️⭐️⭐️⭐️ 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 weak adequate. 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 for you.

(Closed-source, USD60/yr, free for non-commercial use.)

Gitkraken’s signature hipster dark mode.

Oh wait, sorry, this is Gitkraken’s signature hipster dark mode.

Fork

⭐️⭐️⭐️⭐️❓ Looks pretty, Mac/Windows

Fork looks beautiful. I have not used it enough to give it a real review. USD50. The developers are a married couple, which I find charming.

git gui

⭐️⭐️⭐️⭐️ Fast, simple, under-documented, effective, unsightly.

The hatchetface git gui/gitk commands invoke a git gui of sorts, which is free, simple and functional, and OMG SO EYEWATERINGLY UGLY. Traditionally this has been built-in but on recent OSes I have needed to install this separately. However, it is worth mentioning here 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. The visualiser 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

Smartgit

⭐️⭐️⭐️ Overbusy UI, works on Linux too.

SmartGit is less well-known. It has more features than e.g. Gitkraken, but uglier UI, more like gitk. 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.

Gitup

⭐⭐️⭐️⭐️ 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 here, 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.

git-graph

Git graph

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

Git History provides a history view, which is sufficient to make the git integration of VS look like a real git GUI. Auditioning

GitLens

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-punction keyboard shortcuts, locking you out of all the macos default smart-quotes.

SourceTree

⭐️ 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.

tig

⭐️⭐️⭐️ Fast, simple, under-documented, tedious to install.

tig is a console-mode git GUI. It is certainly small.

Tower

Tower has been around for a while I think but I completely forgot it. Maybe it is ok? Mac/Windows.

Gitblade

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). Macos/Linux/Windows. 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

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

gitinspector

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?

TortoiseGit

Similar to RabbitVCS but for Windows. TBC

Working Copy

The only iOS client. Seems fine.

Pocket Git

Pocket Git works on Android.

git-cola

git-cola is open-source, in python. Haven’t used.

giggle

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.

Sparkleshare

Sparkleshare is designed for file syncing for designers, not versioning code for coders. Nonetheless it is a simple git GUI with attention from designers which, as I have mentioned, is a weak spot in the bulk of offerings.

Git repository management servers

GUI via browser.

Merge tools

Also handy. See merge tools.


No comments yet. Why not leave one?

GitHub-flavored Markdown & a sane subset of HTML is supported.