Are there GUI clients good, cross, Mac, Win32, * nix?


It should also support SSH2 and public key auth for starters. secondly on Mac/Windows it should have a decent installer.

As of 2011...

It's an old question, but still very relevant. Over the past few years I have had to work on projects on various platforms using just about every version control system out there. Although ultimately I find that nothing beats the safety and expedience of knowing the command line well, the reality is that a decent GUI really helps with visualization and a really good GUI helps you not make bonehead mistakes.

I have always tried to make the most use of open source offerings, but there comes a time when you begin to appreciate a little extra polish in the product because you (a) get tired and really just want to focus on getting your own product out the door and (b) you get tired of explaining things to more junior team members and so just want the tooling experience to be as smooth and trouble-free as possible.

While working on getting our own iPhone app out the door, we initially settled on SourceTree because it's an excellent GUI and it also supports Mercurial, which I love. In my opinion, SourceTree is well worth the price and you won't regret using it.

However, having led a team that includes a range of experience from junior to very experienced developers on a cross-platform project that involves...

  • iOS (XCode on Mac OS X)
  • Windows Azure and ASP.NET backend (Visual Studio on Windows) became frustrating having to have separate configuration settings and translate mentally between SourceTree on the Mac and TortoiseGit on Windows.

And then we discovered SmartGit. And boy oh boy, do I love SmartGit.

SmartGit costs $70, but I believe it's well worth the price in terms of the productivity boost and hassles it will save for most team members. It is an outstanding Git client with a very slick, polished UI that stands on its own merits and has become my favorite -- but when you throw in the fact that it runs on Windows/Mac/Linux, the value proposition for the team increases exponentially. We love love love not having to use different clients for different platforms.

There is one killer feature for SmartGit compared to any other GUI tool I've used for Git. We make heavy use of Git submodules. If you don't know or use submodules, then this won't apply to you. But if you do, then you will appreciate how brain-dead simple SmartGit makes it. No other GUI Git tool that I've used comes close.

The are caveats:

  1. We had trouble with a repo that was initialized with TortoiseGit using RSA private keys. SmartGit can use the system ssh or it's own built in ssh client that requires OpenSSH private keys. Since we use GitHub for our remote repository, we just switched over to using the HTTPS URL for the repo and everything was fine. However, to get it to work with Xcode or MonoDevelop on the Mac, just make sure to generate DSA instead of RSA for the keys.
  2. SmartGit makes working with submodules extremely easy, but the one thing it doesn't seem to do is automatically initialize nested submodules. In other words, if your submodule itself references other submodules, you will have to right-click on each of those in view to initialize individually.

Ultimately, however, I don't think there is any real competition right now for such a first-class cross-platform Git GUI tool like SmartGit.

If you want to see my comparison of the two best Git GUI tools for OS X, read this answer.