Aug 23 2010

What is the Best Git GUI (Client) for Windows?

Published by at 9:37 am under Technology   

I adopted Git as my primary source control tool a couple of years ago, when I was using Windows as my primary (90%) desktop OS. Since then I’ve switched to 75% Mac OSX, but I still use Git on Windows for a few projects, and I get a lot of questions about Git on Windows.

I use msysgit (and its included GUI) most often myself, but I don’t have a clear answer as to which is the “best” Git GUI for Windows. I can offer this list of choices, though, along with some thoughts about them.

There is also a very long list of Git tools on the main Git wiki; but that page is just a list, without any other information.

msysgit

msysgit is the main project which ships a Windows port of Git. It is based on MSYS, so it fits in the Windows ecosystem a bit better than the cygwin Git port.

msysgit includes the same Tk-based GUI tools as Git on Linux: a commit tool and a repo-browse tool, plus a bit of shell integration to active the GUI by right-clicking in Windows Explorer, plus a new thing call git-cheetah, which appears to be heading toward Tortoise-style integration. These tools are a bit ugly, but have good and useful functionality. I don’t mind the ugly (I get my fix of stylish software over on my Mac…), and I find the features ample for most work.

If you don’t know where to start, or if you want a Linux-like Git experience, start with msysgit and learn to use its tools.

msysgit is free open source software. It is under active development, and keeps up with the upstream Git versions reasonably well. There is even a portable (zero-install) version available.

My biggest gripe with msysgit (and its GUI) is that I had to figure out how to use it effectively myself. I could have really used a video walkthrough of how to be productive with it, back when I was starting out. That was a long time ago for me, but might be Right Now for people reading this post. Mike Rowe (a reader) helpfully suggested this msysgit tour, which is very helpful though a bit dated.

TortoiseGit

This is an attempt to port TortoiseSVN to git, yielding TortoiseGit. If you like and use TortoiseSVN, you’ll probably find this worth a try. I haven’t tried it yet myself.

TortoiseGit is free open source software, and is under active development.

Git Extensions

This Git GUI has a shell extension (like the Tortoise family) and also a plugin for Visual Studio. From the screen shots, it appears to be feature-rich and complete.

Git Extensions is free open source software, and is under active development.

SmartGit

Unlike the other tools listed here, SmartGit is a commercial product (from a German company), starting at around $70. It appears to be more polished than the others, as is often the case with commercial products. It also appears to be quite feature-rich.

I don’t know how SmartGit fits in with the Git licensing; Git is licensed GPL (v2), so I assume (hope?) SmartGit has found some way to use it under the hood without linking to it in a way that would cause license trouble.

SmartGit requires a Java runtime, implying that it is written in Java. Five year ago I thought of that as a caveat; but today, Java-based GUIs can be extremely attractive and fast, so I don’t see as a problem at all.

Is IDE Integration Vital?

I know people who swear by their IDE experience, and are aghast at the thought of any daily-use dev tool that is not integrated with their IDE. It is almost as though for this group, multitasking does not exist, and any need to run more than one piece of software at the same time is a defect.

Now I love a good IDE as much as anyone (I’ve urged and coached many developers to move from an editor to an IDE), but I don’t agree with the notion that source control must always be in the IDE. IDE-integrated source control can be very useful, but there are sometimes cases where non-integrated source control wins.

The most common example for me is when using Eclipse on a large, complex system. There are two annoyances I see regularly:

  • Eclipse assumes that one Eclipse project is one source control project, an assumption that is sometimes helpful and sometimes painful. In the latter case, simply ditch the Eclipse integration, and use a whole workspace (N projects) as a single source-control project, outside of Eclipse.
  • Sometimes Eclipse source control integration bogs down performance. Turn it off, and things speed up.

Therefore, when I use Eclipse, I sometimes manage the files from outside, using msysgit, command line, etc. When I have a complex “real-life project” comprised of many Eclipse “projects”, I set up a separate Eclipse workspace for it, apart from other unrelated Eclipse projects.

Feedback Wanted

I’d love to hear about:

  • More Windows Git GUIs to list here
  • Anything else I’ve missed

.. via the contact page (link at the top of the page). I try to reply to all email within a few days.

If you found this post useful, please link to it from your web site, mention it online, or mention it to a colleague.

5 responses so far

5 Responses to “What is the Best Git GUI (Client) for Windows?”

  1. Hi Kyle,

    I have been using CVS and SVN quite extensively. As UI, I used TortoiseCVS and TortoiseSVN respectively. I can only say that I was /very/ happy with them. Since then I switched the bulk of my dev to git as well and gave TortoiseGIT a shot. From my experience I can say, that it is very complete and certainly very natural choice for anyone with TortoiseCVS/SVN experience. Everything is where you expect it to be.

    However, what I said here has to be taken with a grain of salt: I tested TortoiseGIT mainly out of curiosity. I have used it for the few common tasks (push, pull, commit, checkout, …) but haven’t done anything more “advanced” with it (like branching and merging). I know that branching and merging can be quite essential in some projects, but it wasn’t in those I used with Tortoise.

    The reason I moved away from Tortoise is not because I don’t like it anymore (quite the contrary), but because I now use a different OS in which it is not available. So I got accustomed to using the git shell. And, in my opinion, I think it shouldn’t be underestimated as valid UI for git. And if you need/want a quick visual interface, you can allways run either “gitk” or “git gui” from the shell.

  2. panksdmz says:

    Thx for the article. I’ve used to use TortoiseSVN extensively when i was using SVN. But since getting on git, i’ve actually been using the command line a lot more. Most of the gui’s out there offer a small subset of the commands exposed to you when using the command line. Besides once u get a hang of it.. u can move really quickly.

  3. jkilgrow says:

    My 2 favorites are msysgit and smartgit depending on requirements. For developers, msysgit is sufficient. For not as tech savvy users, smartgit seems to be a good choice.

    A couple of things that I do NOT like about git:
    1. Not good support/integration with IDE tools
    2. Can we make the error messages more cryptic? I mean, really! :)

    Yeah….IDE integration is going to be paramount if git is going to really take off.

  4. Mihai says:

    If you think that source control integration is not doable entirely in an IDE because you can’t do it well in Eclipse, then, well, it’s because you’re using Eclipse :) Try IDEA for a change. I know I’ve used both and God is my witness I tried to work with Eclipse, but after 10 years of life it’s still a buggy and non-intuitive IDE.

    So, everything SHOULD be doable in an IDE if you should want it.

  5. venkat says:

    First of all, I say thanks for writing this article.

    I am using TortoiseSVN for SVN based projects and Migrating to GIT. I am trying differnt tools which can give better control on SCM tasks like branching, merging etc. My choice is to use TortoiseGit since I am familiar with TortoiseSVN and seen the full power of it.