Git GUIs and why I don’t like them

I’m pretty competent with the Git command-line interface, and I use it for most things. But sometimes, especially when I’m navigating a particularly thorny rebase, I like to be able to browse the commit history and view diffs as I go. For this I like to keep a Git GUI around, but none of them are particularly appealing to me. Here are the reasons why, largely for my own future reference.

Gitk

gitk is installed by default with Git (except on, like, macOS where you have to brew install git-gui separately) and is Perfectly Adequate. It is mediocre and doesn’t do much but it does show the repo history and the diffs in a split view, and it works fine.

The diff viewer can ignore whitespace and you can hide added/removed lines. You can easily copy the commit hash, and you can search for commits with a few options:

Additionally, you can use exact matches, ignore case, or use regexp patterns for searching, and you can choose which fields of the commit to search (all, headlinge, comments, author, or commiter).

I’m laying this out as the sort of minimum viable Git GUI feature-set. There are other things I’d like (for example, easy file history, interactively expanding context sections, syntax highlighting) but I don’t want anything there to be missing.

GitFiend

GitFiend (I’m trying version 0.32.0) is a free Git GUI for macOS, Windows, and Linux.

GitUp

GitUp (no version information on the website) is another free Git GUI for macOS (exclusively?).

Fork

Fork is a Git client for macOS and Windows (not Linux?) that costs $50 with a free evaluation period.

Tower

Tower is a Git client for macOS and Windows which costs $70 per year (!). At least from marketing, it looks like they’re building a fairly well-featured app with that money. They advertise drag and drop, easy undos, “a unique conflict wizard”, and file history, all features I want!

The list of improvements in the most recent version of Tower are also pretty compelling — branch comparison and filtering, the sorts of interactive query-type features that are really well suited to GUIs.

I was decently excited about this one but nothing really elevates it above gitk or Fork for me.

SmartGit

SmartGit is a Git GUI for macOS, Windows, and Linux that costs $60–90/year or $264–330 for a lifetime license (with a few options in between).

GitKraken

GitKraken is a Git GUI client for macOS, Windows, and Linux (free, $5/mo to interact with private GitHub repos through GitHub).

GitAhead

GitAhead was a free Git GUI client for macOS that’s been discontinued as of September 2021. RIP, it was nice when I used it (but not amazing).

Conclusion

None of the Git GUIs seem that good. At least SmartGit has a feature I can’t (easily) get with the command-line. Everything else feels like it’s lagging behind.