I’ve been thinking a lot lately about how I use Git in my day-to-day work, and I’ve realized I still default to the terminal for just about everything Git-related. For me, there’s something satisfying about typing out commands and getting immediate feedback, especially when I’m doing things like rebasing, cherry-picking, or fixing up commits.
But then I started wondering… am I just stuck in my ways? There are so many GUIs and tools out there that streamline Git workflows—tools like GitKraken, SourceTree, and even VS Code’s built-in Git integration. Some of them look slick, and I know they make things easier for a lot of people, but I can’t seem to break away from the terminal. Maybe it’s the control freak in me!
So here’s my question: Do you still use Git in the terminal, or have you switched to using a tool? If you’ve made the switch, what’s your favorite Git tool? I’d love to know what everyone’s using these days. Maybe I’ll find something new to try out!
Drop your thoughts below—I’m genuinely curious to hear what’s working for you.
[email protected] is for things related programming.dev, you should repost the question in [email protected] or [email protected]
I use vim-fugitive now for most basic operations, and fall back to CLI.
It’s a mix for me. I’ll definitely use the CLI for most things, but I find some things easier with a GUI:
- Viewing history / branches
- cherry picking
- unstaging files
I use my IDE for basic things, but anything more involved i use git directly. It’s really not as intimidating as it’s made out to be. I’m no expert by any means but i know enough to get around and read the docs when i need help
I’ve been telling all the juniors we have, that they’re free to use a GUI tool, but they do not get around learning the CLI. If you fuck up or Git breaks, you’ll need to look up how to unfuck it and that’s where the only help you find is for the CLI.
In particular, it’s also been my experience that you rapidly come into a situation where suddenly you’re the Git expert and need to help others. If you only know one specific GUI, you can only help others who use that GUI. If you know the CLI, you can help anyone.
It also happens that you need to interact with Git repos on a server where you simply won’t have a GUI.
And yeah, given that whole opinion, personally I seriously do not care to learn a GUI in addition to the CLI.
I use the
lazygit
TUI for most stuffSame. Have it baked into my neovim setup.
I’ve been doing software development for 20 years and use a GUI (GitKraken) almost exclusively. I know all the commands, but using a GUI makes self-reviewing my code as I commit it a LOT easier. It’s also way less error prone and makes visualizing complex branching/merging operations easier to understand. It’s overkill if you’re working solo or with a very small team though; I regularly work on projects with dozens of active branches.
While I don’t like being forced to time-travel back to the 1970s, there’s always a situation that the GUIs can’t handle and I’m forced to use the terminal.
I dunno, terminal just seems simpler. Why have another thing open when it’s simple from terminal?
There are certain things that are easier in a UI like finding the commits related to a defective feature and rolling them back, but for most operations I use the CLI.
> git diff > git add `!! --name-only` > git commit - m "updated doc" > git push origin HEAD
is probably 50% of my work machine bash history. Also fun trick for anyone who doesn’t know:
git checkout -
checks out the last branch and it’s great. “Damn, I need to pull main into this branch” becomes
git checkout - git pull git checkout - git merge main
VS Code’s git features are pretty good for staging changes, resolving merge conflicts, pushing changes. I still do most branch changing and creating with the CLI, and yeah, any sort of problem generally needs the CLI.
We’ve also been using graphite at work and there’s a lot I like about graphite. They have a VS Code extension I haven’t used in a while but their CLI is pretty nice
I never do prs or anything from the terminal, web interfaces have spoiled me on that, but for adding, committing, pushing, and pulling I use the terminal! I even wrote a little helper script with some common shortcuts I use (cad - add and commit, cal - commit and add the list file I diff’d, amend, etc). It even has a default command that shows branches and lines of code changed:
VSCode for partial commits and branch publish. Terminal for everything else.