Git GUIs are far superior to the CLI

2 min read

I see many developers swearing by the Git CLI. They can’t understand how anyone could ever think about using something different.

I know the baseline Git commands myself, but I would've trouble rebasing out of a branch merge conflict only using the CLI. For most kinds of git usage, I turn to a UI. It visualises everything I need all the time.

There are a couple of things where I think the UI has an edge:

  • I see the entire history and git log. It is a graph that I can inspect and filter. The git log is my default view.
  • I don’t have to type yet another command – not even the three char shortcuts everybody uses. All my local and remote branches are listed in the sidebar—no need for any command.
  • For interactive rebases, I see the entire history and move everything around until I’m happy. No need to do it in a strict order.

Git-Fork showing the graph, feature branches and recent code changes

How does this result in day-to-day operations? Somehow, I’m often faster at answering questions about the history and what has been done. Just because I don’t have to execute a few commands and interpret the result to gain an understanding what happened. I switch to the app. Everything is already listed.

Sometimes even the best engineers make mistakes (like accidentally creating these horrible “Merge branch …” commits). Often, I’m the one pointing it out, because I see it right there.

Overall, I find it very interesting how religious developers are about using git from the command line. Yet, through all the moving parts, especially the graph based history, it is a perfect match for advanced UIs.

To take anything from this post, it is this: Don’t be too religious. Find your workflow that suits your needs. Sometimes it is best to take the best aspects from two worlds. There is no shame in using a UI, quite far from it.

There is one git alias I appreciate, though: pfusch. Pfusch is a German noun and means to botch something. Many of us do this all the time by force pushing to the branch we're working on. The alias is the perfect combination of an actual word that is so close to the command. Anyway, here is the alias:

alias pfush='git push --force'

Any feedback? Drop me a line.

I value your feedback, so please keep it coming. Feel free to send directly to this email ([email protected]) with any questions, comments, or feedback.