Abstract

In this article we will give an overview of free Git Gui clients. Running Git from the command line can be demanding, and Gui tools make this easier to do, as well as improving productivity. We will focus only on the tools that you can run for free in both non-commercial and commercial environments.

1. Introduction

I always believed in GUI tools and was a fan of them. I felt they improved my productivity, and a nice graphical presentation can give even better insight into the problem or matter of interest. With the ever-increasing number of tools and languages that the average Software Engineer is faced with every day, it is becoming increasingly difficult to memorize all the command line commands with their numerous options.
But, also there is another school of thought that is popular among programmers, of people who like to do everything from the command line. These “gurus” enjoy running the Git from the command line. This article is not for them.

In this article, we are giving an overview of a selection of the FREE Git Gui applications available today. We focus only on completely free full-versions tools that can be run for free in both non-commercial and commercial environments. If a software engineer invests time and effort into learning and building skills with some tools at home that are free only for a non-commercial environment, and then in his workplace founds that company is not planning to buy that particular tool, it may be considered wasted time and effort. Also, we will not be looking into the tools that give a limited-features version for free, but ask for money for a full-featured version. Fortunately, for Git, there are a number of quality tools available for free.

1.1 Tools tested

Here is a list of free Git Gui tools that caught our attention:

  1. SourceTree (https://www.sourcetreeapp.com/)
  2. GitHub Desktop (https://desktop.github.com/ )
  3. Git Extensions (https://gitextensions.github.io/ )
  4. MeGit/EGit (https://github.com/eclipsesource/megit )
  5. Guitar (https://github.com/soramimi/Guitar )
  6. TortoiseGit (https://tortoisegit.org/ )

1.2 Testing methodology

We assume that the reader has some intermediate-level skills in Git, and thus will not explain Git terms and concepts. We will just show GUI tools’ features. We will test all tools in the following environment:

2. SourceTree

2.1 Details

2.2 Overview

Below, I've provided screenshots.

The main panel is the Branches/History panel:

You can see clearly the Staged files/Unstaged files/Commit button:

A simple integrated viewer is used to show the Conflict files/Merge panel:

Stashes are listed and can be selected and viewed. The stashes panel looks like the below:

Blame shows simple information on changes to the file, line by line. The blame panel looks like the below:

The tool supports an integrated Create Pull Request menu option, that opens BitBucket page in the web browser:

Commit Details, parent nodes, author and date can be clearly seen:

2.3 Impressions

3. GitHub Desktop

3.1 Details

3.2 Overview

Below I've provided screenshots.

The main panel is where you can see a list of Branches. Select a current branch. Only one branch can be seen at a time:

The modified files/Commit button form is simple. It does not list working files vs staged files:

The stashes panel shows stashed files. Again, a very simple form is pictured below:

The Conflict file/Merge panel requires the usage of an external tool to resolve conflicts:

3.3 Impressions

4. Git Extensions

4.1 Details

4.2 Overview

Below, I've provided screenshots.

Here is a lovely main panel showing the Branches/History panel:

Staged files/Unstaged files (working directory) are shown as nodes at top of the current commit:

The Staged files/Unstaged files/Commit dialog offers a clear view of files that are about to be committed:

The Commit Details panel show a lot of details on the selected commit:

The Stashes panel shows stashes and the Branch where they are located:

The Blame panel is a bit complex. The lower part shows classical Blame functionality, while the upper panel shows the commit location in the Branch that corresponds to the selected line in the file/lower panel:

Create Pull Request menu option (which does not work for BitBacket) is provided just for GitHub:

4.3 Impressions

5. MeGit/EGit

5.1 Details

5.2 Overview

Below, I've provided screenshots.

Here is a great Branches/History panel:

Here we see a nice and clean form showing Staged files/Unstaged files/Commit button:

Here is the Commit Details panel with all the needed info:

The Stashes panel enables a clear view of all stashes, including the location of the commit on which the stash was made. File diff is immediately presented showing changes of the stash.

The Blame panel shows advanced info. It points to the location of the commit that made changes and the branch where it was made. It also immediately shows file diff for that commit:

The Conflict file/Merge panel offers an integrated file-diff tool to show/enable changes. A clear view of unstaged vs staged files too:

5.3 Impressions

6. Guitar

6.1 Details

6.2 Overview

Below, I've provided screenshots.

Pictured is the main panel showing the Branches/History panel:

The Staged files/Unstaged files/Commit button is a bit unrefined and unfriendly:

The Commit Details dialog is crude too, but gives all the necessary information:

The Blame panel is simple and functional:

6.3 Impressions

7. TortoiseGit

7.1 Details

7.2 Overview

I've provided screenshots below.

It has a strange application design. The design began as shell extension to file explorer via context menu (right click) at the folder containing your project/repository. It shows the start from the Context menu with all application options listed. That is practically the application menu. I selected Repo-browser (Repository browser). Then I selected to see all the branches:

Again right-clicking, we navigated to Staged files/Unstaged files. There, we see the Commit button that opened the commit dialog:

Then we tried to merge a branch (with conflicting files) to see what would happen. We got a number of dialogs. The below shows the merging of a branch/ Conflict file/Merge panel:

The Stashes panel shows basic stash info:

To get to the Blame panel, you need to right-click the file in the file explorer and browse through the context menu options:

7.3 Impressions

8. Conclusion

The clear winner of this testing is, by far is:

If you are looking for a stable, feature-rich graphical interface and easy-to-use FREE Gui Git client, SourceTree is your choice. SourceTree is the only Git client application you will ever need, and you can use it freely at home and at any workplace you will be working.

However, the other application that left a great impression is MeGit/EGit (https://github.com/eclipsesource/megit ). It gives a bit more detailed information to the power user. The only issue we noticed is that it is not regularly maintained. On the other hand, Git protocol is stable and does not change over time.

Of course, preferences and opinions differ, so everyone is entitled to choose his or her own favorite tool and use it at will.

9. References