Git GUIs

February 8, 2019 — April 11, 2024

computers are awful
information provenance
UI
workflow
Figure 1: By Kerryn Wood

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 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 students and onboarding 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.

1 Git simulator

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.

2 Generic visualiser

Fun hack: diagram tool mermaid can visualize git histories, either real or hypothetical.

3 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 command lines for you, making it transparent what the software 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.

Figure 2

4 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.

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

Figure 3: Gitkraken’s signature hipster dark mode.
Figure 4: Oh wait, sorry, this is Gitkraken’s signature hipster dark mode.

5 Gitbutler

A Git client for simultaneous branches on top of your existing workflow.

And

Instead of trying to fit the semantics of the Git CLI into a graphical interface, we wanted to start with the developer workflow and map it back to Git.

Looks hype, have not used.

6 Fork

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

Figure 5

7 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 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. 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
Figure 6

8 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.

Figure 7: 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.

9 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.

10 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. Maybe it is a good way of formalising the workflow. 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.

11 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.

NB the merge editor has moved: Resolve merge conflicts in Visual Studio.

11.1 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.

11.2 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

11.3 GitLens

Supplements the VS Code built-in git version control with a shinier, more animated blame console so you can see who did what, and lots of keyboard shortcuts for many git tasks.

It comes with default keyboard mappings which I personally find irritating, claiming all the Alt-punctuation keyboard shortcuts, locking you out of all the macos default smart-quotes. Bonus irritation: It is a needy app, popping up medium-frequency announcements about new features, most of which are not helpful for me personally.

If you are keen to use this, be aware that gitlens.currentLine.enabled=true is one of the settings that triggers the annoying wordwrap horizontal scrolling bug.

12 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 halfway through said rebase.

On macOS it leaks file handles, which can crash the computer and cause data loss, either in SourceTree and/or in other apps, and it has done that since 2014/01/20. Sourcetree devs claim that is an upstream macOS bug, and while I am prepared to 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 be about as bad as it is possible for a software bug to be. To be explicit, 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 unfixed for decadal time scales when that bug destroys client data and brings down their systems, and known solutions exist.? 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 dangerously incompetent hobbyist project and inappropriate for professional use.

UPDATE 2023/06/17: fixed in version 4.2.3. It took more than 9 years but they got the job done. Too slow for sane people to trust them however, methinks. You blew your chance 8 years ago, Atlassian.

13 LazyGit

A console-mode git UI. TBD.

14 gitui

A console-mode git UI. TBD.

15 tig

⭐️⭐️⭐️ Simple, under-documented, tedious to install.

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

16 Tower

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

17 Gitblade

Gitblade is a GUI with fewer 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 it is too minimalistic to solve actual non-trivial problems. If you just need to visualize the code versions, just run git gui for the basic visualisation.

18 XCode git integration

Unlikely to arise for me.

19 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

20 gitinspector

Not really a git GUI, but sometimes you want to visualize some other git statistics. Here is a tool for that.

It’s not wildly actively maintained; I wonder if there are others?

21 TortoiseGit

Similar to RabbitVCS but for Windows. TBC

22 Working Copy

The only iOS client. Seems fine.

23 Pocket Git

Pocket Git works on Android.

24 git-cola

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

25 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.

26 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.

27 Git repository management servers

GUI via browser.

28 Merge tools

Also handy. See merge tools.

29 Incoming

Morag S. suggests a few other options. (Thanks!) I’ll likely get to these eventually.