gitui and the plain old git cli
Programming
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
This is very satisfying to use and is a nice companion to the command line - I particularly use it to stage only certain lines and files from the changes.
I tried lazygit first, but there was a consistent lag that was probably only ¼ second but it ruined the experience for me.
I'm a big fan of tig
for visualizing the graph and looking over history (then I don't need to leave the terminal, and it's snappier, in my experience, than most full-GUI programs like Sourcetree), but for actual Git commands, I like the CLI
Github desktop, despite the name it's just a git client. Absolutely clownish that there's no official Linux support (there's a fork which works perfectly). I use it to interact with self-hosted gitea, codeberg and github, pretty happy with it, I'm Aldo testing git butler
CLI, gitui, SmartGit, various editor integrations when I’m there anyway (VS code, JetBrains)
The CLI is great because it works everywhere, but it’s not the best to review changes before I commit, or to inspect the log, plan merges etc. So I tend to go for more graphical tools for these tasks. Used SmartGit a lot at work. But recently learned about gitui and like its simplicity at times esp when I’m at the command line anyway.
The editor integrations I only really use to commit small changes or switch branches, see if I have changes etc.
sourcegit, fork
I made some automation in python for common git tasks and use the cli otherwise. I tried a couple like sourcetree and the built in automation for VS but they're either slow or lack features i'd like.
I mostly use the cli, but also Sublime Merge. It makes some things really convenient (like committing only some lines in a changed file), and looking at diffs is snappy too.
Just fyi, you can add only a few lines of a changed file on the cli too using git add -p
cli and meld for mergetool
Yeah, meld is nice.
i loved fork on windows but i'm too lazy to set up wine to try and get it to work now i just use git cola and the cli.
I use SourceGit as a Fork alternative on Linux, it's pretty similar
Mostly vscode, and GitHub desktop for projects that I don’t use vscode for. I want to learn how to use the CLI, I just didn’t get around to it yet.
Vscode with the Git Graph extension.
It's what they used at my job when I started, it does the job, and I've gotten used to it. 🤷♂️
I personally prefer lazygit nowadays, but when it comes to GUI clients on Windows then Git Extensions is definitely a very good pick.
I particularly like that it doesn't hide that it's just executing git commands under the hood and its focus on the history graph. Those two things really helped understand how git actually works and why I'm still recommending it.
Yeah, maybe it's because I learned git from the graph, but I find it really helpful when figuring out why a certain piece of code ended up looking like it does (the ability to see the changes made in every commit and open versions of the files at any point in history without checking out the commit is also very useful).
And yeah, if you need or want the command line it always lets you open a git prompt for you to do whatever you want, which is nice.
Also, again maybe because it's what I've gotten used to, but I find the way it handles merge or rebase conflicts more useable (or rather less unusable) than any other I've tried...
Whatever's built into pycharm or vscode for looking at diffs. Command line for push pull squash etc
I use Sourcetree for routine stuff, though I occasionally have to hit the command line when shit gets real.
I use GitHub Desktop on Mac and PC. It works fine with local repos, too.
Mainly the official git CLI for controlling branches and sub modules, and sometimes the GitHub CLI if quickly checking out a pull request from a forked repo.
Also use the source control tab in VSCode rather often, as it's really convenient to review and stage individual line changes from its diff view, and writing commit messages with a spell check extension.
If it's a big diff or merge conflict, I'll break out the big guns like Meld, which has better visualizations for comparing file trees and directories.
About a decade ago, I used to use SmartGit, then tried GitKraken when that came around, but never really use much of the bells and whistles and wasn't keen on subscription pricing. Especially as the UX for GitHub and other code hosting platforms online have matured.
CLI, nvimdiff 90% of the time. If I’m on a windows workstation, I might end up using git extensions GUI as it helps me visualize what’s happening a little better sometimes.
CLI for me. I do use the GitLens plugin in vs code but only so I can see commit info inline. I never commit anything from vs code.
I like Kaleidoscope (v3) for diffs but not for merging. I could probably use any graphical difftool for this purpose but it’s what I’m used to.
For professional use I’ve heard good things about SmartGit, unfortunately my work refused to buy me a license and the trial period wasn’t long enough for me to really form an opinion.
Work suggests to use SourceTree but it is way too sluggish.
These days I use git CLI for most things, and VSCode to review changes and submit PRs. Of course this also assumes you use a decent shell with git support, like Oh-My-Posh or similar, so it is always clear what you are working on.