79

What are the benefits and disadvantage of using either Git Extensions or TortoiseGit on a Windows Based OS?

Shawn Mclean
  • 56,733
  • 95
  • 279
  • 406
  • 7
    TortoiseGit is a good choice if you're already gotten accustomed to e.g. TortoiseSVN. It's a shell extension - so you need to work from the Windows Explorer. GitExtensions is a full-blown Windows app which you can launch separately from the Windows Explorer; but it feels a bit "odd" to me at times, not really fully the way I expect a Windows utility to work - and it crashes and freezes up a lot (at least for me). – marc_s May 16 '11 at 04:57

10 Answers10

102

I don't know GitExtensions, but I can share my experience with TortoiseGit (alluded to by marc_s's comment):

Pros:

  • Excellent integration with Windows (it's a shell extension)
  • Nearly the same UI as TortoiseSVN (if you already used TortoiseSVN, you know what to expect).

Cons:

  • You will have a hard time understanding how to use git.

The problem with TortoiseGit is that people who worked with TortoiseSVN will think everything will (or should) work exactly like in SVN... and end up never really understanding how to work with git. As a personal experience, the company I work migrated from SVN to git after 2 years, and every single developer that used TortoiseGit ended up not really knowing what they are doing and sometimes screwing up their local repositories. In the end, they dropped TortoiseGit and spend time learning git "the hard way" (shell, msysGit on Windows) and everyone has been happy since then.

Conclusion: Just use msysGit directly and properly learn git. You will avoid many headaches in the future.

Chase Sandmann
  • 4,795
  • 3
  • 30
  • 42
Rafael Ibraim
  • 1,515
  • 2
  • 12
  • 13
  • 1
    As someone who came the other way, from using Git Extensions to having to use TortoiseSVN for another project, I found using TortoiseSVN very irritating. Tended to screw up the SVN repository, although I eventually got used to it. From my experience and Rafael's comments I think there is definitely an impedance mismatch between the Tortoise way of doing things and git. – Simon Elms Mar 09 '13 at 13:50
  • 4
    Personally I use TortoiseGit for commiting (to review commit) and log view only, for other operations use command line –  Sep 05 '13 at 14:33
  • 2
    TortoiseGit don't have hard time learning, it just operate like TortoiseSVN. by the way, i use TortoiseGit and gitextension both. – Cheung Sep 11 '13 at 01:33
  • 2
    @user133408 : you can simply use "gitk" and "git-gui" from git bash for that. no use for bloated software that clunks the whole machine and slows down the file explorer, and causes file locks. – v.oddou Aug 03 '15 at 02:44
  • Please update answer with: "msysGit has been superseded by Git for Windows 2.x" – Danijel Oct 22 '18 at 12:51
  • The big problem with tortoiseGit is it slows down the windows explorer and indeed your whole computer with its aggressive cache thrashing algorithms. – Warren P Jan 13 '22 at 20:27
26

My company tried both and quickly dropped Tortoise Git. It crashed much more often. The coders claim that Tortoise Git is not capable enough but I did not check that myself. But I did see lots of The crashes myself.

The Coders prefer git bash, the others use but hate git Extensions. Although even some of them additionally open up git bash. Git bash is unavoidable to see the progress counters.

Git Extensions has no option to show progress counters during a pull. So with Git Extensions only, you sit in front of an enigmatic non-progress bar, not knowing what happens and whether something failed. The worst is a missing or incorrect password: Git Extensions just lets you wait forever, showing the same glowing bar as if it was doing something time-consuming. Another horror of Git Extensions is the frequent abort with "out of memory", when versioning many big files and pulling with rebase. After such an abort, non-coding users are always overwhelmed with problems. Many files that they did not change show up as changed and the lock file prevents them from dealing with the problem, etc..

In my opinion both GUI tools are immature.

klaus thorn
  • 269
  • 3
  • 2
  • As an update, although the error messages can still be a bit confusing, they are actually showing up properly now. – Teo Klestrup Röijezon Nov 16 '12 at 14:26
  • 7
    Git Extensions supports displaying progress during pull a long time ago. Git process interrupting is also fixed. – KindDragon Mar 04 '13 at 18:52
  • 1
    For general information, if KindDragon uses the same user name across multiple sites then he's one of the Git Extensions developers so his information is likely to be correct. – Simon Elms Mar 09 '13 at 13:53
  • I've used TortoiseGit starting in 2016 and it's always been a breeze for me since then. – Marc.2377 Mar 06 '19 at 18:06
21

You want Git Extensions for one important reason - it shows you the graphical view of the commit log (see below). Without that graphical view I don't think most folks new to git will ever get what is going on with branches, commits, rebasing, cherry picking, etc (I know I didn't).

You are going to do want to do some of your work on the command line also, it's your best bet to practically use git since all the help you get will be command line based.

All that said, you can use Tortoise Git also (assuming it works) since they all call the same command line executables and act on the same git repository.

Most IDEs have git support also, JetBrains IDEA does a great job of adding change lists and other functionality on top of it.

Git Extensions log view

studgeek
  • 14,272
  • 6
  • 84
  • 96
  • 6
    This is a very important consideration. Due to its CVS/SVN heritage, TortoiseGit is file- and directory-oriented. But git itself is not - it is history-oriented, and files and directories just happen to be what that history is concerned with. In fact, any Git tool whose principal means of access is via the file/directory context menu is flawed. This includes Git Extensions as well. – Jeremy Dec 20 '12 at 15:45
  • 1
    For the record: TortoiseGit implemented a log graph view several years ago. It is richly developed by now, and you can do from there 95% of things TortoiseGit does. – Martin Grey May 09 '22 at 08:38
13

I don't have much experience with TortoiseGit, but I installed, and am currently using GitExtensions v2.21.

The biggest advantages with using GitExtensions:

  • visual gitk-like graphical display of codelines and branches, with all essential info available in tabs, eliminating any need to work with the unfriendly SHA's.
  • ability to install as Administrator and all other users on the same PC can use it just like any regular user.
  • built-in shell integration with Windows Explorer
  • out of the box integration with Visual Studio (Windows Eclipse users only need msysgit, as they have their own GUI to replace the need for GitExtensions)
  • easy to use installer that comes pre-packaged with all necessary and pre-requisite functionality to start out of the box (SSH Client, KDiff, msysgit).
  • integration with GitHub (Fork,clone, pull are all streamlined)

Disadvantages:

  • documentation does not keep up with the new features constantly being added. For example, I still don't know how to use the scripting features.

Lest we forget that it is a completely free program, and offered to us as an option with no strings attached, I don't see the rationale for such high expectations placed upon it, as if we were paid clients? I have seen some of the aborts and freezing that the previous user mentioned, but I believe the majority of that has been fixed in v2.24. Alot of the aborts and failed actions are really not the fault of GitExtensions, but more a symptom of a systemic problem outside of GitExtensions (eg. misconfigured SSH setup, file permissions issues on the server hosting the remote repo, etc). For example, there was one time when I did a simple push which caused fail and abort. It turns out that the remote I was trying to push to was on a very long pathname which was causing problems for the Mac server that hosted the repo.

Anyways, that said however, my experience with GitExtensions has been fairly positive. I find the benefits outlined above have made it worthwhile to put up with the occasional aborts and freezes until the bugs are fixed.

Phileo
  • 131
  • 1
  • 2
12

I can't speak to Git Extensions as I've never used it. Had some problems with pure GIT. Couldn't integrate GVIM, for instance. Tortoise Git has an integrated editor and diff tool (which is amazing), so that's a very nice convenience. I loved the branch diagrams in the Scott Chacon book and was hoping TGit would have a similar diagram. They do have a tool for showing branches but it's not as nice as the one in the book.

One thing to bear in mind is that since TGit is just a shell on top of GIT, there's no harm in mixing the two methods. I use TGit for most everything, but dip into GIT for commands that are awkward or that I simply don't understand well in TGit. But even if you plan to use TGit, it's still important, as mentioned above, to understand the basics of GIT first. I'd read through the first, say, three chapters in the Chacon book (available for free online at http://progit.org/book/ or by purchase at Amazon). If you're like me you may want to read them several times over to let the paradigm sink in. It's not all that complicated, but it is very different from previous VCS's.

TGit never crashed on me, as it has for some of the other reviewers, but then my repo's have been small. It did eat my commit comments on more than one occasion, which could have been user error. Since you can go back and re-edit comments this was just an annoyance and worth the convenience of having a GUI, with windows that show a great deal of info at a glance.

Dave March
  • 121
  • 1
  • 2
  • Just want to comment that I have had the same experience. Use TGit except when it's easier to use bash for less typical operations. TGit has a great log, great built-in diff, and now in 2016 is solid. – Raj Oct 26 '16 at 01:34
10

Just to counter some of remarks above:

With the correct expectation, TortoiseGit provides an excellent gui for working with git on Windows. It is not a replacement for TortoiseSvn, but an improved gui over what one can achieve using gitk + git-gui (which can be considered part of core git functionality and accessible in msysgit). The only bad thing I see is how you would not need to remember all the exact commands for checkout/rebase/merge etc, since it is possible to do all that very conveniently through the gui (which is the whole point). The putty/ssh problems have more to do with the inferior support for ssh on Windows, and are not unique to TortoiseGit.

prusswan
  • 6,853
  • 4
  • 40
  • 61
  • 2
    Also in favor of **TortoiseGit**: 1) It's much faster on older PCs without several-second load lags like GE; 2) It allows to edit current file in default diff-viewer; 3) It has much more options in the context menu; 5) It has configurable columns in commit viewer; 5) It minds `autocrlf` setting in GUI (i.e. doesn't re-warn on staging like GE); – Annarfych Dec 11 '16 at 04:57
  • Just use it with openssh instead of putty and be happy – Marc.2377 Jan 25 '17 at 06:20
7

I use GitExtensions. I haven't used TortoiseGit but one of our other developers loves it and refuses to use GitExtensions. His reasoning is 1) It's familiar; 2) It has great Windows Explorer integration.

Using GitExtensions I tend to use the Windows Explorer integration for three things only:

1) To create a new local repository (context menu item Git Init Here, which is actually a Git for Windows command; GitExtensions sits on top of Git for Windows);

2) To open the Git Extensions GUI (the browse window);

3) To clone a remote repository down to a local repository (context menu item Git Extensions > Clone).

For pretty much everything else I just have the GitExtensions GUI up and work from there.

The developers of GitExtensions claim that almost any command can be executed from the GUI. This is not quite true but I find I only need to drop into the command line interface about once or twice a month for complex tasks.

In some cases the GUI makes complex tasks simple by hiding the complexity of the underlying Git commands. This sometimes involves combining several Git commands into a single action. eg Creating submodules where the GUI combines adding a submodule, initializing it and updating it into a single action. In another case, the GUI simplifies a task by providing a command which Git lacks - removing a submodule (in Git you have to manually edit the various files such as .gitmodules and .git/config to remove a submodule). I'd be interested to know if TortoiseGit simplifies complex tasks in a similar way.

GitExtensions also has fairly basic Visual Studio integration. Don't know if TortoiseGit does. There is a separate Git Source Control Provider for Visual Studio 2008 and 2010 which provides much more extensive Visual Studio integration. However, having installed the Git Source Control Provider I find I never use it. The only GitExtensions integration I use from Visual Studio is on the toolbar, to open the GitExtensions GUI with the appropriate repository. I'll work with Visual Studio on one monitor and GitExtensions open in the other.

From at least version 2.32 GitExtensions shows the number of uncommitted files in its toolbar. I previously used 2.24 which didn't have this feature and it's very handy. Gives instant feedback on whether there are any uncommitted changes or not.

Simon Elms
  • 17,832
  • 21
  • 87
  • 103
5

For fast and easy compilation, customization, and building extensions, GitExtensions is better (C#) than TortoiseGit (Visual C++ MFC)

For portability, GitExtensions is better (.NET on Windows / mono on Linux/Mac) than TortoiseGit (Win32/64 only)

To use icon overlay in Explorer, use TortoiseGit

For performance of some features, TortoiseGit is better because it calls static / dynamic library to retrieve the result from the repository, while GitExtensions only invokes git.exe command line which has larger overhead.

To migrate from TortoiseSVN, TortoiseGit will be more familiar with than GitExtensions

linquize
  • 19,828
  • 10
  • 59
  • 83
  • 1
    You do not need professional edition of visual studio to compile GitExtensions, but you need for TortoiseGit – linquize Sep 04 '12 at 06:27
  • 1
    Professional edition is required if you want to build the shell extension of GitExtensions. Core parts compile with Express Edition, – linquize Feb 20 '13 at 01:31
  • TortoiseGit calls to libgit2 and thus it's **MUCH** faster (caps and bold intentional) – Marc.2377 Jan 25 '17 at 06:22
0

Don't use TortoiseGit :-) i have been forced use it in a few long consulting projects, and you don't learn Git. You learn SVN essentially and think its Git.

Bjorn
  • 117
  • 1
  • 6
  • This is what happened to me. But it did help to get started as I was also about 1 year into learning source control in general. – Shawn Mclean Aug 25 '21 at 00:35
0

DATE: 2011-08-27.

At this point, Tortoise Git DOES NOT WORK at all, and the issue on the google code site has not received attention in a month: http://groups.google.com/group/tortoisegit-users/browse_thread/thread/9090337b7936e1e1 .

The box 'Load Putty Key' from the popup on Tortoise Git's first usage to clone a site (and start developing) is grayed out. So no private key is found, and the error message is 'connection dropped' SUCCESSFUL!!!!

Git Bash works perfectly, albeit console based. And if everyone above talks about not understanding the Git concept when using Tortoise Git, I'd just stay away from it based on that, even not taking into account the last 3 hours I spent trying to get Tortoise Git working for a developer. He's going to have to learn console Git, or go down the road.

I got it working in 15 minutes, and I'm just a hacker trying to hire programmers ;-)

PS, Eclipse has all three major Version Control repository 'connectors' available and is a very good editor.