What are the benefits and disadvantage of using either Git Extensions or TortoiseGit on a Windows Based OS?
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.