I am not particularly snobby when it comes to development, sure I use vim, but I like to think I am not one of those “holier than thou” developers. I think the right tool for the job differs not just from job to job, but from person to person.
With that said, if you had told me you use a GUI git client, I would silently assume you just hadn’t given the CLI a fair go.
That is until I played with GitKraken.
I started using GitKraken about three weeks ago and have been using it exclusively for all my git related tasks. The TLDR of this post is that I will not be going back to the command line for my git work.
Before I start the review in earnest I want to mention a few things.
The version of GitKraken that I am writing about today is 1.2.0 – I mention this because Axosoft seem to have a fairly aggressive release cycle. This means that some features may have changed or have been added / removed if you are reading this in the future (greetings, time traveller).
I haven’t been paid or offered anything to write this review. I know I don’t need to say that but when reading overly positive reviews I am aware that I often think “how much was this person paid to write this”!
The comparisons I draw between other ways of interacting with git are going to be exclusively with the git command line tool. I have used other GUI tools in the past but it was very long ago and I never gave any of them a fair hearing before moving back to my beloved terminal.
What is GitKraken
Let me quote from their website;
Axosoft GitKraken is a cross-platform Git client with efficiency, elegance and reliability at the core. It was made for devs by devs.
Lets unpack that a bit.
- Git client – It is a client for working with the version control system git. So it will handle merging, pushing, branching, rebasing, all that good stuff.
- Cross-platform – I had initially and mistakenly thought this was a Mac OS X application. It is available on Windows and Debian (plus Ubuntu) also.
- Efficient – It is quick to learn and performant.
- Elegant – It feels nice to use, it has a style and pizzaz to it.
- Reliability – It works consistently and does what you would expect to happen. Incredibly important when dealing with your professional work.
I happen to agree with everything they have said there, I think GitKraken is incredibly elegant, reliable and efficient.
I am unsure why they have mentioned that it was made for devs by devs. Version control is almost exclusively used by developers, so that is a given, writing software is exclusively done by developers also. It seems like a redundant sentence. I won’t let a minor gripe with some marketing copy put me off the product though!
First run experience
Installing and setting up GitKraken is a joy.
You download GitKraken and when you install it you are taken through a short wizard to get the application set up.
Once you are set up you are asked to verify your email.
After verification you get to play an adorable Galaga style game.
If you use GitHub or BitBucket you can set up your credentials within the app to allow for nice integrations with those services.
If you use Git Flow (please don’t kick me out of the club, I don’t) then you can set up the prefixes and branch names that you like to use.
Finally, and most importantly you can pick your theme, which means I can have a dark theme :-)
You can do all the standard things you should be able to do with a git client; branching, merging, pulling, pushing, reverting, etc.
I want to draw attention to some of the features that aren’t trivial to do in the CLI.
Staging in Hunks and Lines
As well as staging files (an incredibly common task in git), with GitKraken you can stage hunks of a file and lines of a file.
This feature comes in handy when you are editing a file as part of one task and you just so happen to notice a really quick code improvement you could make in that file. You don’t want the improvement to muddy the commit you are about to make so you can make a separate commit just for the improvement.
Quickly jumping between Local, Remote, Stashed branches
There is a sidebar visible in most views that lets you see all of your local, remote and stashed branches.
This is a handy view of the incomplete branches you could be working on – if this needs tidied up you can read my post on how to quickly tidy up your git branches.
To jump between any branches simply double click. By default once a new branch is checked out it will be pulled/fast-fowarded (this setting can be changed).
The range of options you have for each commit
Most of the options available are easy enough to do with git’s CLI but having easy access to options like;
- Set Upsteam
- Branch from a historic commit
- Cherrypick from commit
- Revert the commit
- Edit the commit message
- Deleting the commit (and remote versions of it)
- Creating a tag from a commit
Removes the barrier of having to think of a command for something that you maybe only need to do once or twice a month.
Features I would like to see
There are three things that as of writing GitKraken doesn’t do which I would love it to;
- When opening a repo you can’t quickly type to jump to a name. I have a lot of repositories so this would be awesome.
- It would be fantastic if you could spell check commit messages.
- Being able to select multiple files at once to stage. Right now you can stage all or stage one by one individually, I’ve found several instances when I would like to select a sub-section of edited files that are all grouped together.
Out of these three points, only the first one can be easily addressed with the CLI, the other two aren’t available out of the box to the CLI.
I think if you have made it this far you can probably guess what I am going to suggest you do next. Download the Kraken and try it for yourself!