Wednesday, March 27, 2013

A Quick Look at SourceTree for Windows

Atlassian recently released a beta version of SourceTree for Windows, their graphical Git client, which was previously only available on Mac. Since BitBucket kept telling me to give it a try, I gave in and snagged a copy.

Now, I gotta say, the Git CLI is amazing. I mean, you can do some crazy stuff in a simple terminal window. Tasks like interactive rebasing and cherry picking hunks of changes work surprisingly well on the command line. But there are also tons of features of Git that would lend themselves well to a GUI. So let's peek in on SourceTree to see what it provides.

The Interface

At first glance, the UI is a bit intimidating, but I was able to get rolling with it relatively easily. There are three main views for your repository:

  1. File Status View - Here's where you can see the status of your working copy, with a separate panel for your staged changes. There's also a panel that shows the diff of the selected file.
  2. Log View - This includes the list of revisions, as you'd expect, with that usual vertical branch graph that we all know and love. You can see the nitty-gritty commit details, a list of changed files, and a diff of the selected file.
  3. Search View - This view allows you to search your revisions for text in a commit message, in a file change, or in an author name. Similar to the Log View, it also has commit details, a file list, and a diff window.

You can switch between these views using the tabs along the bottom of the screen, but Ctrl+1, Ctrl+2, and Ctrl+3 will get you there way faster.


When using the CLI, there are plenty of times when developers want to stage only certain files. When that happens, we end up having to add each file by name, or we try to figure out some clever glob to hit all the files we want. Either way, it can be tedious. SourceTree lets you simply drag the files from the working copy panel into the staging panel -- an action that was very natural for me, and gets the job done fast.

Likewise, the ability to stage or unstage individual hunks within a file is really cool -- it just takes a click. That totally makes my life easier.

For me, the repo list along the left mostly got in the way. Although I'd like to be able to switch or edit repos once in a while, most of the time, I don't have a need for it. Thankfully, it can be hidden with Ctrl+B.

Finally, there's not much support for resolving conflicts, although in fairness, many version control clients leave you to your own devices here. If resolving your conflict is as easy as choosing "Mine" or "Theirs", then you're in luck. Otherwise, you can configure an external diff/merge tool and click a button to launch that. And of course, there's always your IDE where you can edit it by hand.


I'll admit that I feel a bit anxious about having SourceTree run certain Git commands for me, particularly when they involve destructive operations like rebases. Call me a control freak, I guess.

Still, having all my branches, tags, and stashes so visible is very nice, and I'm thrilled with the way you can so easily stage files and hunks.

So, I expect I'll be running both SourceTree and a Git terminal window side-by-side.

FTC 16 CFR, Part 255 Disclosure: I have no material connection to this app – I simply thought you'd like to hear about it.

No comments:

Post a Comment

Profile Picture
Dave Leeds
My Hobbies:
  • Programming
  • Cartooning
  • Music Writing
Full Profile