{"id":112,"date":"2015-05-13T00:00:00","date_gmt":"2013-01-01T00:00:00","guid":{"rendered":"https:\/\/www.sqlhammer.com\/blog\/choosing-a-git-client"},"modified":"2026-03-18T21:51:47","modified_gmt":"2026-03-18T21:51:47","slug":"choosing-a-git-client","status":"publish","type":"post","link":"https:\/\/sqlhammer.com\/index.php\/2015\/05\/13\/choosing-a-git-client\/","title":{"rendered":"Choosing a Git Client"},"content":{"rendered":"<p>Version control (VC) is very important for any type of IT shop, big and small, as well as for application code and database code. Most of my career I\u2019ve used Microsoft\u2019s <a href=\"https:\/\/msdn.microsoft.com\/en-us\/vstudio\/ff637362.aspx\">Team Foundation Server (TFS)<\/a>\u00a0for my VC system. I have recently changed organizations and found VC to not exist in my new environment. This is a huge problem and, thankfully, management was excited to approve the project to stand up a system. I\u2019ve chosen to go with <a href=\"http:\/\/git-scm.com\/\">Git<\/a>\u00a0for a number of reasons that I will not be getting into for this post.<\/p>\n<p>With Git selected, I now have the task of choosing a Git client for Windows which I will then have to train my co-workers on. I have, and continue to use, <a href=\"https:\/\/github.com\/\">GitHub.com<\/a>\u00a0via their <a href=\"https:\/\/windows.github.com\/\">GitHub for Windows (GHfW)<\/a> client for personal projects. I like the client but I wanted to select the\u00a0<em>right\u00a0<\/em>client rather than\u00a0<em>the one that I\u2019m used to<\/em>. Which brings me to the goals \/ requirements that I\u2019ve created for this selection process.<\/p>\n<h2>Goals \/ requirements<\/h2>\n<ul>\n<li>Graphical interface.<\/li>\n<\/ul>\n<ul>\n<li>Freeware.<\/li>\n<\/ul>\n<ul>\n<li>Single application for all Git interactions.<\/li>\n<\/ul>\n<ul>\n<li>Must be as simple and intuitive as possible.<\/li>\n<\/ul>\n<p>I want to be able to document the process completely but without writing a book that no one will read.<\/p>\n<ul>\n<li>Shows version history.<\/li>\n<\/ul>\n<ul>\n<li>Shows differences.<\/li>\n<\/ul>\n<ul>\n<li>Detects changes in files.<\/li>\n<\/ul>\n<p>I want the app to serve as a reminder to the user that they have not yet committed their changes.<\/p>\n<ul>\n<li>Track commit authors.<\/li>\n<\/ul>\n<p>Some of those requirements seem to be basic functionality which will be available in all clients. I made this list, however, to not only check to see if the\u00a0app can perform the duty but also to compare how intuitively the interface handles those duties.<\/p>\n<h2>Candidates<\/h2>\n<p>Using my personal experience with Git, a Google search, and a quick Twitter pole, I selected the below listed clients as the best potential candidates for analysis.<\/p>\n<ul>\n<li><a href=\"http:\/\/git-scm.com\/downloads\">Git GUI<\/a><\/li>\n<\/ul>\n<ul>\n<li><a href=\"https:\/\/code.google.com\/p\/tortoisegit\/wiki\/Download\">TortoiseGit<\/a><\/li>\n<\/ul>\n<ul>\n<li><a href=\"https:\/\/windows.github.com\/\">GitHub for Windows<\/a><\/li>\n<\/ul>\n<h3>tl;dr<\/h3>\n<p>I chose TortoiseGit.<\/p>\n<h3>Git GUI<\/h3>\n<p>When installing Git, I installed Git GUI and Git Bash. After going through this client analysis I\u2019ve grown to enjoy using Git Bash. Git Bash, however, is neither graphical nor intuitive. Which brings us to Git GUI.<\/p>\n<p><a href=\"http:\/\/www.sqlhammer.com\/blog\/wp-content\/uploads\/2015\/05\/sqlhammer-git-gui-1.png\"><img decoding=\"async\" src=\"http:\/\/www.sqlhammer.com\/blog\/wp-content\/uploads\/2015\/05\/sqlhammer-git-gui-1.png\" alt=\"\" \/><\/a><\/p>\n<p>The start-up screen is very simple and easy to use. You can see from the image above that UNC path repositories are possible. This became an important feature for me as I began defining the way we would handle various repositories within our organization. While its simplicity is\u00a0a positive, I also found a negative here. Below is the window that you are brought to after opening a repository. If you typically use a single repository (repo) for your projects, you would likely do everything in this one location. We intend to have several repos and I felt that the need to exit the application and come back in through the start-up screen was not intuitive and mildly annoying.<\/p>\n<p><a href=\"http:\/\/www.sqlhammer.com\/blog\/wp-content\/uploads\/2015\/05\/sqlhammer-git-gui-2.png\"><img decoding=\"async\" src=\"http:\/\/www.sqlhammer.com\/blog\/wp-content\/uploads\/2015\/05\/sqlhammer-git-gui-2.png\" alt=\"\" \/><\/a><\/p>\n<p>Git GUI is\u00a0very light weight using\u00a0less than 7 MB of memory and loading in less than a\u00a0second on an under powered laptop. It will detect changes in your files, once the repo is opened, and the commit process is intuitive.<\/p>\n<p>Overall Git GUI stuck me as\u00a0<strong>acceptable<\/strong>. Not much about it made me feel\u00a0excited to select it but it meets all of the requirements and only has the downside of how you open and close repos.<\/p>\n<h3>GitHub for Windows<\/h3>\n<p>I have used GitHub for Windows a lot. I use it for personal projects and, naturally, for interaction with GitHub. It is a bit heavy, however. Using more than 100 MB of memory and taking more than 7 seconds to open on my test machine, I typically leave it open or practice patience.<\/p>\n<p><a href=\"http:\/\/www.sqlhammer.com\/blog\/wp-content\/uploads\/2015\/05\/sqlhammer-github-1.png\"><img decoding=\"async\" src=\"http:\/\/www.sqlhammer.com\/blog\/wp-content\/uploads\/2015\/05\/sqlhammer-github-1.png\" alt=\"\" \/><\/a><\/p>\n<p>The most notable pro for using GitHub for Windows is the interface. I find it the most intuitive of the three clients being compared. The visualization of differences and version history is great. The audience that I\u2019m selecting this client for will only be using the most basic of Git commands, which makes this client appropriate.<\/p>\n<p>I would like to note that it would not be good for anyone acting as a source control administrator. Likely I would select\u00a0Git Bash or a different client for power users.<\/p>\n<p>Sadly, this app ruled itself out for us by <a href=\"http:\/\/stackoverflow.com\/questions\/19297414\/can-i-make-repositories-in-a-nas-in-github-for-windows\">not supporting UNC paths<\/a>. Also, I found that performing pulls from a git remote was not intuitive at all.<\/p>\n<h3>TortoiseGit<\/h3>\n<p>I ended up choosing TortoiseGit for our users. The primary reason for my choice was the fact that TortoiseGit is a Windows Explorer extension. As I mentioned above, I loved GitHub for Windows\u2019 interface but it didn\u2019t support UNC path repos. With GitHub out of the running, I find TortoiseGit much more intuitive than Git GUI because it utilizes folder structures that everyone using Windows already understands.<\/p>\n<p><a href=\"http:\/\/www.sqlhammer.com\/blog\/wp-content\/uploads\/2015\/05\/sqlhammer-tortoise-1.png\"><img decoding=\"async\" src=\"http:\/\/www.sqlhammer.com\/blog\/wp-content\/uploads\/2015\/05\/sqlhammer-tortoise-1.png\" alt=\"\" \/><\/a><\/p>\n<p>The menu, above, is customizable and extremely powerful. Viewing version history and differences is very similar to Git GUI. Unfortunately, you have to double click on each file that changed to see the differences, though. No preview pane was available.<\/p>\n<p><a href=\"http:\/\/www.sqlhammer.com\/blog\/wp-content\/uploads\/2015\/05\/sqlhammer-tortoise-2.png\"><img decoding=\"async\" src=\"http:\/\/www.sqlhammer.com\/blog\/wp-content\/uploads\/2015\/05\/sqlhammer-tortoise-2.png\" alt=\"\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.sqlhammer.com\/blog\/wp-content\/uploads\/2015\/05\/sqlhammer-tortoise-3.png\"><img decoding=\"async\" src=\"http:\/\/www.sqlhammer.com\/blog\/wp-content\/uploads\/2015\/05\/sqlhammer-tortoise-3.png\" alt=\"\" \/><\/a><\/p>\n<p>I also liked the way TortoiseGit predicted the next logical step. For example, if you commit to master, on the window\u00a0indicating completion, you can push a button to perform a push. It seemed that in most of the normal tasks you could flow from one window to the next easily, performing all of the commands that are necessary in your work flow.<\/p>\n<hr \/>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/hammer-derik-172x140.png\" alt=\"\" \/><strong>Written by Derik Hammer of <a href=\"http:\/\/www.sqlhammer.com\/\">SQL Hammer<\/a><\/strong><\/p>\n<p>Derik is a data professional focusing on Microsoft SQL Server. His passion focuses around <a href=\"http:\/\/www.sqlhammer.com\/blog\/category\/high-availability\/\">high-availability<\/a>, <a href=\"http:\/\/www.sqlhammer.com\/blog\/category\/general\/disaster-recovery\/\">disaster recovery<\/a>, continuous integration, and automated maintenance. his experience has spanned long-term database administration, consulting, and\u00a0entrepreneurial ventures.<\/p>\n<p>Derik gives the SQL community credit for plugging the gaps in his knowledge when he was a junior DBA and, now that his skills have matured, started <a href=\"http:\/\/www.sqlhammer.com\/\">SQLHammer.com<\/a> as one small way to give back and continue the cycle of shared learning.<\/p>\n<p>Derik is the owner and lead author of SQL Hammer, a <a href=\"http:\/\/www.sqlhammer.com\/\">Microsoft SQL Server resource<\/a>.<\/p>\n<p>For more information, visit <a href=\"http:\/\/www.sqlhammer.com\/\">http:\/\/www.sqlhammer.com<\/a>. Follow Derik on <a href=\"http:\/\/twitter.com\/SQLHammer\">Twitter<\/a> for <strong>SQL tips and chat<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Version control (VC) is very important for any type of IT shop, big and small, as well as for application code and database code. Most of my career I\u2019ve used Microsoft\u2019s Team Foundation Server (TFS)\u00a0for my VC system. I have recently changed organizations and found VC to not exist in my new environment. This is [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-112","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/posts\/112","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/comments?post=112"}],"version-history":[{"count":1,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/posts\/112\/revisions"}],"predecessor-version":[{"id":374,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/posts\/112\/revisions\/374"}],"wp:attachment":[{"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/media?parent=112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/categories?post=112"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/tags?post=112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}