Why You Should Use a Git Client
Tags: git, github, webdev, programming
Published: 2022-11-22 18:38:08

I started programming 7 years ago. After watching dozens of YouTube tutorials, I decided to take things more seriously and enroll in a coding bootcamp in 2015. 

It was hard work, but I had a blast! We covered HTML/CSS/JS, Ruby, Ruby on Rails, and Git.

We were encouraged to use the command line as much as we could, so I got pretty comfortable with Git's most popular commands, such as `git commit`, `git branch`, `git push`, and `git pull`. I worked mostly solo during that time, so those commands were usually enough for my daily workflow.

When I finished my bootcamp, I wasn't working alone anymore. I learned the hard way how to amend commits, fix merge conflicts, and what force push was about. It started to become a bit overwhelming 😰

As projects got more and more complex, I was feeling blind with just a terminal by my side, so I took the plunge and explored what Git clients had to offer. 

## Adding a Git Client to My Web Development Workflow

Like many others, I started with Sourcetree, a free Git client. The visual aid it provided opened my eyes (pun intended) to how I could become more productive with Git. 

I could easily:

- find the commits and branches I needed
- have a look at what changed in each commit
- add service accounts (like GitHub) for quick cloning

At first, I felt guilty — using a Git client was sometimes seen as cheating! For this reason, I would still go back to the command line to recreate some operations, or read the Git documentation to figure out how to type some commands.

I was acting as if the Git client wouldn't be there for me tomorrow. I guess I didn't want to let my bootcamp senseis and my peers down 😶

Looking back, that doesn't make much sense to me. I should be busy coding, not wrestling with Git! So I started relying more and more on Git clients. That gave me more time to learn how to properly center a div and keep up with JavaScript frameworks.

Sourcetree was a great introduction to what a Git GUI can bring to the table, but I didn't stop there. I always enjoy trying out new apps, so I gave many other Git clients a shot — some free, some paid. Now, I have the privilege of doing that for a living (I work at Tower).

[Tower](https://www.git-tower.com) is my favorite of the bunch. **It's available for both Mac and Windows and is currently on sale — 50% off for the first year (Black Friday deal).**

Tower also offers a 30-day trial with all the features. It doesn't ask for an email account or credit card, so there's absolutely no pressure to give it a shot. 

Oh, and it's free for students and teachers!

## Why I Think You Should Give Tower a Try

[Tower](https://www.git-tower.com) has all the basic features you would expect from a premium Git client. It can perform any Git operation with the greatest of ease, like staging files (or chunks), amending commits, merging and rebasing, stashing, etc.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k4jap3w4p03ihfsvxune.png)

It supports all the popular remote services, such as GitHub, BitBucket, GitLab, Azure DevOps, Perforce, or Beanstalk. You can clone and publish new repositories directly in the client, manage pull requests, and perform repetitive actions (like fetching) automatically for you.

It has many quality-of-life improvements, like managing multiple author profiles and GPG keys, a command palette, a CLI tool, LFS and submodule support, and themes.

But the big differences are in the details. And no other app comes close to Tower when it comes to intuitiveness and feeling productive.

Here are 4 things that I think are worth highlighting:

### 1. Native App

I don't hate Electron apps, but sometimes they don't feel right (maybe that's why I still prefer to use SublimeText over VS Code). I tend to use native apps, even though they're hard to come by.

Tower was developed using native technologies, and it shows. It's a joy to look at and the performance is stunning. Even while working with large repositories, I never felt any hiccups.

### 2. Undo

Quite possibly my favorite feature. Other Git clients also allow you to undo some actions, but sometimes they don't work as you'd expect (or some actions are missing).

With Tower, you just need to hit CMD+Z (or CTRL+Z on Windows) whenever you make a mistake. This is a huge confidence-booster for me; every once in a while I'm just going through the motions and I accidentally mess things up.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s4qcc5op6aoyq1yutzlx.gif)

You can undo pretty much any action; every time I run into an issue, I just hit CMD+Z and it works. It has never let me down — even while merging or rebasing.

Another thing I find really neat is that it can recover file discards — which is something that Git doesn't actually allow! I was pleasantly surprised the first time I pressed CMD+Z and the discarded file returned to my working copy 🤩

### 3. Working with Branches

I'm constantly checking out different branches, so I really appreciate the effort the team put into this.

First, checking out branches is a breeze. You can use Quick Actions (Tower's command palette) or, if it's a frequently used branch, you can pin it to the sidebar.

I also enjoy how you can compare branches to pinpoint the commits that are exclusive to a branch, or how it tells you that you will need to solve a merge conflict if you go ahead and merge that branch. 

The "Branches Review" view even identifies which branches are safe to be removed, so that you can clean up messy repositories without looking over your shoulder.

### 4. Drag and Drop

Another prime example of how Tower thinks differently is how Drag and Drop was implemented. It’s so intuitive that I miss it when I'm not using Tower for a Git operation.

I can drag and drop to cherry-pick commits by simply dragging commits from another branch to the HEAD branch. I can move commits around or drop one on top of another to perform a squash. Interactive Rebase is *really* easy this way.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ag84nvbdjs9nq5c7w79.gif)

I often spend a good chunk of time reviewing and tweaking the commits I added before pushing everything to the remote repository. Drag and drop is vital in this process.

While those are my favorite use cases, drag and drop also works to merge, push, and pull. It's even possible to create (or publish) branches this way.

---

I don't waste time with Git anymore — everything just works! For this reason, I highly encourage you to give [Tower](https://www.git-tower.com/) a try (even if you're proficient with the command line)!

What about you? What's your favorite Git client and why?