Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / DevOps / Git

Git – 6 Free GUI Clients

4.47/5 (7 votes)
1 Aug 2022CPOL11 min read 16.2K  
We are giving an overview of 6 free Git GUI clients
In this article, we are giving an overview of free Git GUI clients. Running Git from the command line can be demanding and GUI tools make it easier and improve productivity. We are focusing only on free tools that you can run for free in both non-commercial and commercial environment.

1. Introduction

I always believed in GUI tools and was a big fan of them. I felt they improve my productivity and a nice graphical presentation can give even better insight into the problem/matter of interest. With the ever-increasing number of tools and languages, an average Software Engineer is faced every day, it is becoming very difficult to memorize all the command line commands with their numerous options.
But, also there is another school of thought, also very numerously presented among programmers, of people that 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 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 in learning and building skills with some tool at home that is free only for a non-commercial environment, and then in his workplace founds that company is not planning to buy that particular tool, it is wasted time and effort. Also, we will not be looking into tools that give some limited features version for free, but ask for money for a full-featured version. Fortunately, for Git, there is 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 will not be explaining Git terms and concepts. We will just show GUI tools’ features. We will test all tools in the following environment:

Image 1

2. SourceTree

2.1. Details

  • Product: SourceTree
  • Company: Atlassian [3]
  • Website: https://www.sourcetreeapp.com/
  • Platforms: Windows, Mac
  • License: According to [4], the Full version completely free for non-commercial and commercial usage

2.2. Overview

Here are screenshots.

The main panel is the Branches/History panel:

Image 2

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

Image 3

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

Image 4

Stashes are listed and can be selected and viewed. Stashes panel:

Image 5

Blame is showing very simple information on changes to the file, line by line. Blame panel:

Image 6

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

Image 7

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

Image 8

2.3. Impressions

  • Very nice graphical interface. Smooth running. Stable. Good balance between the quantity of information in the user interface and ease of use.
  • Big company Atlassian stands behind it, so it is a well-maintained application.
  • Many nice features. Integrates well with BitBucket Cloud, though that is also an Atlassian product

3. GitHub Desktop

3.1. Details

  • Product: GitHub Desktop
  • Company: GitHub/Microsoft
  • Website: https://desktop.github.com/
  • Platforms: Windows, Mac
  • License: According to [5], the Full version completely free for non-commercial and commercial usage
  • Note: Despite being called “GitHub Desktop”, it can be used with other Git services. We tested it with BitBucket Cloud.

3.2. Overview

Here are screenshots.

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

Image 9

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

Image 10

The stashes panel shows stashed files. Again, very simple form:

Image 11

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

Image 12

3.3. Impressions

  • We didn’t see that staged vs unstaged files can be presented
  • It seems that only stash is possible, it asked to overwrite existing stash when adding 2nd stash
  • Didn’t see how to do Blame
  • Didn’t see how to get more info on commit details
  • “Pull request” was grayed out, maybe because we were using it with BitBucket Cloud. Didn’t see how to enter credentials for other accounts than GitHub. Though, Pull/Push worked fine when I entered BitBucket credentials.
  • Detects conflicts and offers to open the application of your choice to do a file merge. Does not have a conflict viewer of its own.
  • Didn’t see a way to graphically present more than one branch at the time.
  • Generally, a much humbler version of GUI options than the tool before.
  • Considering that Microsoft bought GitHub [7] for $7.5 billion, I am surprised by how humble in features/options this tool is. It is inferior in features/graphical presentations to several of the applications we tested here.

4. Git Extensions

4.1. Details

  • Product: Git Extensions
  • Company: Open Source
  • Website: https://gitextensions.github.io/ 
  • Platforms: Windows, Linux
  • License: According to [6], it is Open Source, and the Full version completely free for non-commercial and commercial usage

4.2. Overview

Here are screenshots:

Very nice main panel showing Branches/History panel:

Image 13

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

Image 14

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

Image 15

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

Image 16

Stashes panel shows stashes and the Branch on which they are:

Image 17

The Blame panel is a bit complex. The lower part is 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:

Image 18

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

Image 19

4.3. Impressions

  • It was surprising how many options and features this application has. Rich graphical interface with many options.
  • It was asking too many questions on startup, they needed to provide defaults, even if simple ones. It was bothering me with questions about configuring diff-tool and marge-tool. They should have put default as notepad.exe, so later users can put something else.
  • I was trying for 30 minutes to configure the right merge tool, but still was not working. Just would not work. The simplest of tools should have been installed as default because this way you are stuck with configuring.
  • Many options worked well and were fancy. It was envisioned as a “tool for experts” that know what they are doing. It is a bit complex UI for a beginner user.
  • It for some reason created some “backup” files in my project directory, like “Doc4.txt.orig”. And added them to the git project. I was disappointed because it corrupted my repository in that way, which is against its basic purpose. Maybe it misled me to click something wrong to accept that commit, but I just do not know how that file finished in the repository.
  • It has a bit of a problem with rendering dialogs, you would need to resize them to see the content well.
  • If you like a tool with many advanced features, know Git well, and like to research different options, you will like it. But, my general impression is that it is not mature enough, a bit unstable, and can be annoying for everyday work.

5. MeGit/EGit

5.1. Details

  • Product: MeGit/EGit
  • Company: Open Source/Eclipse License
  • Website: https://github.com/eclipsesource/megit
  • Platforms: Windows, Linux. Mac
  • License: According to [8], it is Open Source, and the Full version completely free for non-commercial and commercial usage

5.2. Overview

Here are screenshots:

Very nice Branches/History panel:

Image 20

A very nice and clean form showing Staged files/Unstaged files/Commit button:

Image 21

Commit Details panel with all the needed info:

Image 22

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

Image 23

Image 24

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

Image 25

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

Image 26

5.3. Impressions

  • MeGit [8] is really a wrapper application that wraps Eclipse plugin EGit [9] into a standalone application. Less than technology background, what we care about is the final result: does it work well? Is it usable as a standalone application for all different kinds of projects?
  • From licensing point of view, [8] claims that all is free and open source. But since it is really using EGit [9], it comes down to the license for EGit. From what I see in [10}, it comes down to Eclipse Public License, so it should all be free.
  • Actually, it worked pretty nicely. One needs to get used to the user interface, but it is working pretty smoothly.
  • I liked the fact that UI provided well-organized and detailed information. It gives you a good feeling that you have it all under the control.
  • Didn’t see a way to issue a “Pull request” from the application.
  • Since this tool looked pretty impressive, I checked a bit on it. It seems that it is not updated and maintained regularly. From what I see, plugin EGit had more releases later than the release of MeGit. That means that the latest version of EGit is not included in the MeGit executable that can be downloaded from that site.

6. Guitar

6.1. Details

  • Product: Guitar
  • Company: Open Source
  • Website: https://github.com/soramimi/Guitar   
  • Platforms: Windows, Linux, Mac
  • License: According to [11], it is Open Source, and the Full version completely free for non-commercial and commercial usage

6.2. Overview

Here are screenshots:

Main panel showing Branches/History panel:

Image 27

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

Image 28

Image 29

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

Image 30

Blame panel is simple and functional:

Image 31

6.3. Impressions

  • From the start, very bad impressions. Looks like an unfinished application.
  • Very slow Gui sometimes, although it says it is C++ code
  • Didn’t let me Commit with an unstaged file in the working directory. That is a BIG functional bug.
  • Couldn’t see stash content
  • Decided that do not want to waste time with this. Looks like an unfinished/ unrefined application, without many features, sometimes annoyingly slow, and definitely not something you would want to use on a daily bases.
  • Funny thing, that app is listed on some Git sites as a recommended GUI client… it is not practically usable for everyday work. Greatly inferior to other applications we tested here.

7. TortoiseGit

7.1. Details

  • Product: TortoiseGit
  • Company: Open Source
  • Website: https://tortoisegit.org/
  • Platforms: Windows
  • License: According to [12], it is Open Source, and the Full version completely free for non-commercial and commercial usage

7.2. Overview

Here are screenshots:

Strange application design, it is started as shell extension to file explorer, via context menu (right click) at the folder containing your project/repository. Showing start from the Context menu with all application options listed. That is practically the application menu. We selected Repo-browser (Repository browser). Then we selected to see all the branches:

Image 32

Image 33

Image 34

Again with right-click, we got to Staged files/Unstaged files. There we got the Commit button that opened the commit dialog:

Image 35

Image 36

Then we tried to merge a branch (with conflicting files) to see what will happen. We got a number of dialogs. Merging a branch/ Conflict file/Merge panel:

Image 37

Image 38

Image 39

Image 40

Stashes panel shows basic stash info:

Image 41

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

Image 42

7.3. Impressions

  • Application is started from the Context menu, and all menu options are listed also as context menu options, so there will be a lot of “Right clicks”. It is a bit strange/unfriendly for an average user.
  • While it definitely has a lot of functionality, the user interface is fragmented into independent dialogs, and a bit does not follow a definition of what is assumed under “Gui Client”.
  • We think that integrated Gui client solutions, which we saw in previous applications, offer more comfortable work for an average user.
  • Since it is very annoying that now when I right-click on the file, I have too many options in the context menu from this application, I plan to uninstall this very soon.

8. Conclusion

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

If you are looking for a stable, feature-rich, nice graphical interface, and easy-to-use FREE Gui Git client, SourceTree is your choice. That 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 is not regularly maintained. On the other hand, Git protocol is stable and does not change over time.

But 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

10. History

  • 1st August, 2022: Initial version

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)