I’m a visual person. I prefer to use graphical tools whenever possible. This also applies to the management of my (humble) code contributions to the research team tools, all of them hosted on GitHub. So far, I’ve been using SourceTree as Git client to commit, push, pull,… on the repositories. And it’s worked pretty well for me but it offers very limited visualization support (see below) and I wanted to explore other, more visual, alternatives to handle the more complex development merging/branching scenarios we are facing in Xatkit. Note that computing and visualizing in a usable way the Git commit-graph is not trivial at all. In fact, Git’s own support for this is improving.
And I did find a few tools. Not all of them useful but all interesting and/or plain surprising. I’ll use this post to keep track of them.
Visual Git Clients
There are plenty of Git clients (also for mobile devices!). Not that many that emphasize the visual history of the repository. Here we goes my selection.
Gmaster shows a strong commitment to being as visual as possible and not just a GUI wrapper on top of the Git command line. It integrates a number of different visualizations. To begin with, you can use its branch explorer to navigate your repository, checkout branches, diff and merge from this view. The representation also helps identify the commits with more changes at a glance too.
But this is not the only useful visualization. You can, for instance, also perform visual merges and visual diffs.
Obviously, nobody forces you to everything at the graphical level. You are free to use these visualizations to get an overview of the state of the project and then move on to a more classical text diff/merge for the fine-grained details.
Gmaster is still free so give it a try (and give some feedback to the creators!).
GitKraken is one of the most well-known Git clients. It comes with a large number of features and integrations. Among them, a visual commit history that includes also a drag-drop functionality. It’s a very interesting option for students, educators and non-profits as, beyond a free plan, they offer a pro account to all of them plus a large number of educational resources to learn Git.
GitUp lets you see your entire labyrinth of branches and merges with perfect clarity. Any change you make, large or small, even outside GitUp, is immediately reflected in GitUp’s graph. No refreshing, no waiting. And serious speed as well (they claim to render the entire graph of 40,000 commits for the official Git repo in less than a second).
Even better, GitUp is free and entirely open source. To top it off, in the same repo you’ll find GitUpKit, a reusable generic Git toolkit. GitUp itself is built as a thin layer on top of GitUpKit. This means that you can use that same GitUpKit framework to build your very own Git UI.
Tools to learn Git
Tools whose purpose is to help you learn how Git works. They are basically an online environment where you can type sequences of Git commands and the tool renders a visualization to help you understand what’s going on in response to your commands
Git Gud is a minimalistic web-based environment where you can write git commands and see their impact on an initially empty repository, with the sole purpose of “getting good” (I guess this is why they named the tool Git Gud).
Another learning environment is Git School. You can basically do the same as with Git Gud. This time the commit graph is displayed horizontally.
Similar, though less complete, this web is an example of how you could use D3 to visualize git histories.
Learn Git Branching
LearGitBranching.js is more than a playground to run and visualize Git commands. It helps you learn Git by proposing you to complete a sequence of Git exercises of increasing levels of difficulty. Dare to test your Git level with them and see if you can write the Git sequence of commands to reach the proposed scenario!.
Other interesting Git tools
Instead of visualizing the history of the repo, Git History helps you to quickly browse the history of files in any git repo. Go back in time and see who did what changes when.
Git Temporal for VSCode has a similar goal: to allow you to quickly see the changes over time to a file or directory in your Git repository.
Software projects are displayed by Gource as an animated tree with the root directory of the project at its centre. Directories appear as branches with files as leaves. Developers can be seen working on the tree at the times they contributed to the project. Not really sure this animation alone brings any useful information but it’s definitely cool to see. Check the video below, showing the history of python development, to understand better what I’m talking about.