While not the popular opinion of CLI git users, I’ve gotten a ton of mileage from my git GUI. Using the CLI rather than a GUI provides a lot of value: seeing the bigger picture of your code and being able to navigate through different branches, commits or history can become clean and easy to understand with a little help from your friendly GUI.
As a recap on what each term means, here is a description of git, CLI and GUI:
CLI – “Command Line Interface.” When using the CLI, the git user will be interacting with git and their repo through the command line on a terminal, with commands given and information seen in the terminal as well.
GUI – “Graphical User Interface.” Rather than using the terminal, a GUI will show the repo and git commands with more visual aspects and become more interactive for the git user. These can be presented as its own program. or even integrated into other tools you may already use. SourceTree, GitKraken, Git Cola, Github Desktop, or SmartGit are a few of the names you may be familiar with already.
The CLI vs GUI argument
This argument can at times come with a little heat, and as with most arguments, there are valid points to each side.
Oftentimes, the CLI’s side claims using this method can give you access to all of the fine features offered by git where a GUI may fall short. Using a GUI also poses the issue of whether or not the user fully understands the concepts presented by git, which can become fairly important as they interact with the repo from day-to-day.
On the other hand, a GUI helps put visuals to the structure of your repository which could be lost in the CLI. Common tasks can also become easier and less time consuming (always a plus!) throughout your day as you just need to push a button rather than typo out lengthy branch names into commands.
My preference is assertively GUI as it can help you in your day-to-day performance, from visual help to time management.
The visible features of your repo are going to undoubtedly be the first thing you notice when first checking out a git GUI and one of the most useful reasons for grabbing one of these programs. Visual learners will appreciate these features over the text of a terminal.
Branches are shown similar to branches on a tree, which is probably where they get their name. With one glance, you can pretty easily see where the branch started, how many changes are associated with that branch and how many branches are currently floating around on your repo.
Commits are listed in order on each of their branches, so seeing the changes as they happened becomes intuitive. Not only can you visually see the commits, but the user can easily click on each one to get information such as what changed on that commit, when it happened or who did it. When running around trying to find when a pesky bug first appeared in your code, being able to click through commits quickly is extremely helpful!
Note: In the above pictures, the CLI’s picture shows the commit changes, where with the GUI, you need to click on the files on the right to see how they were edited.
Diffs. While you can check diffs on both the CLI and GUI similarly, I find checking them through the CLI can be confusing, especially on larger diffs. Seeing colors added and a better line-by-line comparison can make a world of ‘difference.’ 😅
Stashes were one thing that bothered me while using the CLI. I was able to stash fine, but where did they go? Obviously, those stashes were out there somewhere, but they are easy to forget about and have extras taking up space.
Just taking a look at the differences between these two options can give you a pretty quick idea of how visually seeing your repo can help with development speed and understanding. Time, reliability and a sane mind are all very valuable assets to us developers!
Quicker and Easier Actions
Once again, another benefit to using a GUI is time. Many git commands have been reworked into a couple of clicks of a button in your standard GUI. When you want to stash your uncommitted code? Click a button. You want to check out a different branch? Click on it. You want to rebase your branch onto a new branch? Two clicks.. but still quick! You’ll quickly be racking up the saved time as you don’t have to find branch names, type out full commands or search through all the text in your terminal.
While I don’t think using a GUI is definitively better, I do find I have received a lot of value from using mine over the default CLI tools. I would highly suggest installing one and giving it a whirl to see if it will help you out as much as it did with me, especially if you are newer to git. If you came in with a distaste for git GUIs, I hope you can see why us git GUI-users aren’t all too bad.
And if you have questions about an embedded project you’re working on, Dojo Five can help you with all aspects of your EmbedOps journey! We are always happy to hear about cool projects or interesting problems to solve, so don’t hesitate to reach out and chat with us on LinkedIn or through email!