Thursday, July 6, 2023

In Search of: The Ultimate Git GUI Client

You might thing that because of a post where I rant about Git's glitchiness that I hate git. I'm actually a pretty happy Git user, except when Git is having one of its moods.

 I have been a long time TortoiseGIT user, and before that, I was a tortoise HG user, and before that, a TortoiseSVN user.    In brief, the Tortoise family of version control GUIs main design philosophy is that Tortoise hooks itself deeply into the Windows Explorer.   This has been both a source of its power, and a source of pain, since this original decision.   The caching mechanisms it uses are part of the speed, and also part of the pain and bugs.   Having Tortoise on your system means that Windows explorer (and your computer) is almost always doing work in the background to index your entire hard drive  to find which folders are Git repositories and what the status of every working file in every folder is.

The good part is that once you accept the overall system issues, and perhaps slowness of your entire computer, and that you will periodically have to manage issues like the tortoise Cache needing a reset,  you get always on "friction free" awareness that a file has been modified, just by looking at the icon decorations in windows explorer.   This really is great.  Except when it's not.

Recently, Windows 11 (my main developer workstation) started locking up when I log into my desktop, and I had to create a new user account and log into it in order to get to my desktop, which was hard to do, since Windows profile corruption was also preventing me getting to the windows desktop.   I was eventually able to get a Task Manager up and to run a command prompt and launch other things, even though the Windows Explorer itself was refusing to initialize, open the start menu and taskbar, etc.    The best I was able to do was figure out that this problem went away when I uninstalled Tortoise.  I can't prove that Microsoft changed anything but I can say that I doubt a lot of the Explorer Shell team at MIcrosoft are checking for regressions for all the thousands of shell explorer extension API products out there that hook into Windows explorer.  

While I think the folks who make Tortoise are wonderful, I can on longer trust that Microsoft will avoid touching things that have "always worked" and in Windows 11, breaking things wholesale, seems acceptable.   Hiding most of the right click context menu content under a second level of right click menus, fine.  If it makes some top level program manager at Microsoft happy; Hey look we simplified your Windows Experiences and made all those shell extensions (like 7Zip's one, and Tortoise, and others) just GO AWAY.

Right now the number one candidate to replace Tortoise Git as a GUI is Git Tower or Git Kraken.  I'd be happy to hear comments from other people with suggestions.


  1. I prefer Fork:

    But SourceTree is still a reasonable alternative.

  2. I use SourceTree for simple day-to-day usage - see what has been changed, pulls, commits etc, but its Log and Blame handling are very limited - basic navigation is missing, no find, go to line etc. It can also choke when there are a lot of changes in a commit, e.g. when updating third-party packages.
    I mainly use Git Extensions ( for blame and history, can be a bit slow on our code base - but that may be due to 22 years of commit history! (CVS -> SVN -> Git)

  3. many programmers in our company use sourcetree. i personally like the combination of tortoisegit and the git command line to be much more efficient. you can define git aliases and some bash extension to shorten things. so for me 'co' calls the tortoisegit commit dialog, rs the resolve dialog in case merge/rebase/pull had conflicts. so it ends only working from the command line (having one window per repo) with some git commands definitely beating gui commands: pull, merge, branch, checkout/switch. i also integrated tortoisegit into the ide's: delphi/vs to show log / diff / blame for the current file

  4. In the past I've tried and *used* each and every imaginable git client. Now I am a very happy user of GitExtensions. It has a clean and functional user interface and does not waste your CPU cycles in the background. No fancy background syncing of explorer. It is open source and is backed by a vibrant, competent and professional team of developers one of of which is Igor Velikorossov (aka RussKie), a senior Microsoft engineer part of the .NET team at M$. Just my two cents, please give it a try and I am confident you will not be disappointed, at least it does not exhibits the cache related issues that afflicts TortoiseGit.

    "There are only two hard things in Computer Science: cache invalidation and naming things."

    -- Phil Karlton

  5. My new laptop came with Windows 11, but I think I'll stay with Windows 10 for my development VMs for a while.

  6. SourceTree is missing great blame and merge tools.