One of the nice things about using Git for version control on a Unity project is the large number of free and paid clients to choose from. In this article, I’ll review a few of the options that I’ve tried while working on past projects.
Command Line Client
It’s hard to avoid using the Git command line client at certain times when working on a git repository. I find it easier to set up the initial repository from the command line and perform quick commits. Most tutorials also use the command line, and there is a near-endless supply of Stack Overflow questions and answers to get help when using it.
Even with all the help out there it can still be a bit overwhelming at first due to the myriad of Git commands available. Luckily it’s possible to assign new aliases in Git, which makes it easy to come up with a relatively short list of custom commands to use for most tasks. I’ll cover several of mine in the next article as well.
During the Git installation (for Windows), it offers the choice of two terminal emulators to choose from. In the past, I’ve used the Windows console option (cmd.exe), but it had an annoying issue that would cause me to have to restart it every so often. Lately, I’ve been using the other option, MinTTY, which works quite well but has the opposite issue. If certain applications like VS Code are launched from it and then MinTTY is closed, it will fail to restart until those applications are also closed. So far, it hasn’t been a huge issue as I just leave MinTTY running, but it’s something to be aware.
There are times when a nice GUI can come in handy especially when browsing the commit and branch history. In the following sections, I’ll cover a few that I’ve tried and which work best for my workflow.
GitHub for Unity
Despite its name, GitHub for Unity can be used with non-GitHub repositories. When it first came out I was quite excited by the prospect of a nice, in-editor Git client. It’s free and open-source, but sadly it has now been deprecated. It does appear that there is still some work being done in this git-for-unity fork, but sadly nothing in the last 7 months. So for now, it appears that we’re left using one of the following general-purpose Git clients.
SourceTree is free and made by Atlassian who also run Bitbucket, Jira, and now Trello. I’ve used it for different projects over several years and, while not without its quirks, I think it’s still one of the best (free) clients available for Windows and Mac users. It’s History view makes it easy to keep an eye on past commits, and I’m a fan of the No Staging option in the File Status view. Branching, merging, and stashing are all straight forward and work well.
Fork is a relatively new Git client for Mac and Windows that can be evaluated for free, but costs $49.99. It has a nice, clean interface that is similar to SourceTree’s. It offers side-by-side diffs which I like a lot more than the standard diff style (although that is an option as well) and both a light and dark UI theme. There are some new image comparison features for LFS tracked files in the Mac version that look useful, but sadly updates to the Windows version seems to lag behind a bit.
One thing that did impress me with Fork was its performance. On my relatively small game project, Fork launches and opens my repository about 4 to 5 times faster than SourceTree (and uses about half as much RAM). Since I tend to close my Git client when I’m done using it, this is certainly a bonus. There are several other nice features in Fork, so check out its blog if you decided to give it a try.
Git Tower / Git Kraken
Finally there are a couple of paid Git clients that are worth looking at. Tower and GitKraken are both popular choices. Tower is currently $69 per user per year for their Basic plan, and it runs on Windows and Mac. GitKraken runs on Windows, Mac, and Linux and has a lot of great features, but it costs $4.95 per month per user.
Since my indie-development is a pretty slow process, I like to avoid as many subscription-based products as possible. On the other hand, having a well-supported product is also nice, so I might look into one of these options at some point in the future.
Picking a Git Client for Unity Projects
After testing several Git clients, my current choice is split between the Git command line for most tasks and Fork (with SourceTree as a solid backup) for tasks that require a bit nicer visualization such as reviewing large commits. It’s a shame that there are no options for in-editor Git clients.