this post was submitted on 24 Feb 2026
34 points (97.2% liked)

Git

4568 readers
1 users here now

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Resources

Rules

  1. Follow programming.dev rules
  2. Be excellent to each other, no hostility towards users for any reason
  3. No spam of tools/companies/advertisements. It’s OK to post your own stuff part of the time, but the primary use of the community should not be self-promotion.

Git Logo by Jason Long is licensed under the Creative Commons Attribution 3.0 Unported License.

founded 2 years ago
MODERATORS
 

Do you use some GUI, TUI, terminal commands, plugins for other software?

Ideally, I want to find a cross-platform GUI app, preferably a FOSS one, and with as less overhead as possible, e.g. no Electron.

top 35 comments
sorted by: hot top controversial new old
[–] expr@piefed.social 17 points 5 days ago (1 children)

The git CLI. GUIs don't get anywhere near what it can do, and the CLI is scriptable and can easily interop with other programs.

[–] ieGod@lemmy.zip 1 points 4 days ago (1 children)

Performing a diff would like a word.

[–] expr@piefed.social 2 points 4 days ago (1 children)

Not sure what you're saying. Are you saying you need GUIs for diffs? Because that couldn't be further from the truth. Unified diff itself is highly underrated (and my preferred form for many reasons), but even if you wanted side-by-side diffs, there are many ways of accomplishing that without a GUI. That's the entire point of git difftool.

[–] ieGod@lemmy.zip 0 points 4 days ago (1 children)

What I'm saying is that performing a diff via command line isn't something that brings as much utility as using a GUI. You can do it, but a major part of this utility is the visual aspect, layout, navigation. CLI tools don't come close to what I want. Isn't difftool meant to be used in GUI form? Am I missing something here?

[–] expr@piefed.social 1 points 3 days ago

The default difftool is vimdiff, which is not a GUI program. But no, the point of difftool is to iterate through files to diff and pass the different versions to an external program. There are many external CLI and TUI diffing programs. The point, though, is that the git CLI is still the driver of everything and you still have the full range of options available to git diff, rather than some GUI program being the driver, which are universally limited in what they can do.

Personally, I load regular git diff output into a vim buffer via :read. Unified diff is largely superior to side by side diffs, IMO, because most of the time, changes in one file are accompanied by changes in a number of other files, so it's useful to be able to quickly follow a thread of changed calls or whatnot. And with unified diff output, you can see and manipulate hunks directly.

[–] DavidP@lemmy.world 2 points 3 days ago

I have some handy aliases so I use CLI most of the time. And on my gaming keyboard I have the side macro keys set to:

  • git status
  • git diff
  • git add .
  • git commit - m """ (with the cursor left into between quotes)
  • git commit -am ""

For merge conflicts I'll use whatever the IDE provides.

[–] kibiz0r@midwest.social 10 points 5 days ago (1 children)

Regular git CLI, with like 15 years of aliases

[–] EarMaster@lemmy.world 2 points 4 days ago

Most commonly used alias for me is gti="git"…

[–] fibojoly@sh.itjust.works 1 points 3 days ago

I just used whatever my company would provide, and since I changed company quite a bit, and SVC software with it, I never really learned anything beyond add, commit, push/pull (seriously) for the last 18 years. Then this winter they asked me to teach advanced git, so I went ahead and learnt all the fancy commands and I'm thoroughly enjoying the CLI with command completion.

[–] baduhai@sopuli.xyz 7 points 5 days ago* (last edited 5 days ago)

Raw git. I get lost everytime I try to use any git front end, tui or gui.

[–] FizzyOrange@programming.dev 4 points 5 days ago (1 children)

I found this one recently which is really good:

https://github.com/sourcegit-scm/sourcegit

Much better than most of the standalone Git GUIs, even the commercial ones.

However I don't actually use it, because I use VSCode and there's a great extensions called Git Graph that integrates nicely into it. It is abandoned unfortunately but it still works fine so I still use it.

Here's my rating of all the Git GUIs I've tried (that I remember):

  • SourceTree: works ok but just so incredibly slow.
  • GitKraken, SmartGit, Tower, Sublime Merge: Commercial and I don't like the UX of any of these.
  • Git Extensions: This one is actually really good. Terrible name though. Also kind of Windows-only.
  • GitX: This is also really good but unfortunately it's one of those pieces of software that has forked into dozens of half maintained versions that you'll need to spend hours in phpBB forums figuring out which one to use (like TomatoUSB). Also Mac only.

I never tried Magit because TUIs are dumb.

Also don't listen to anyone that says "just use the CLI". It's okay once you've learnt how git works, but even then you're still going to want a way to view the commit graph. Learning Git without a GUI is needlessly masochistic. Once you have learnt it you can start mixing it up with the CLI.

[–] Tempy@programming.dev 1 points 4 days ago (1 children)
[–] FizzyOrange@programming.dev 1 points 3 days ago (1 children)

Yes if you don't get a real GUI you'll end up using this poor-man's imitation a lot.

[–] Tempy@programming.dev 1 points 2 days ago

Fair enough. I don't tend to use it all that much. But it is there. I tend to find I don't really need to see the graph all that much. Maybe because I'm mostly working in small teams. It's just not that important to my understanding of what's going on.

[–] pinball_wizard@lemmy.zip 4 points 5 days ago (1 children)

I prefer pen and paper.

When that's unavailable, command line is fine.

[–] Kissaki@programming.dev 3 points 4 days ago* (last edited 4 days ago)

pen and paper is decentralized storage too, but the push and fetch sync protocols are a lot of work

[–] JackbyDev@programming.dev 2 points 4 days ago

I use git in the terminal. On Windows I used git for Windows. I even used that MSYS CLI it provided as my daily driver terminal.

[–] Kissaki@programming.dev 2 points 4 days ago* (last edited 4 days ago)

I’ve been using TortoiseGit since the beginning, but it's Windows-only.

In TortoiseGit, the Log view is my single entry point to all regular and semi-regular operations.

Occasionally, I use native git CLI to manage refs (archive old tags into a different ref path, mass-remote-delete, etc).

Originally, it was a switch from TortoiseSVN to TortoiseGit, and from then on, no other GUI or TUI met my needs and wants. I explored/tried out many alternative GUIs and TUIs over the years, but none felt as intuitive, gave as much overview, or capabilities. Whenever I'm in Visual Studio and use git blame, I'm reminded that it is lacking - in the blame view you can't blame the previous versions to navigate backwards through history within a code view. I can do that in TortoiseGit.

I've also tried out Gitbutler and jj, which are interesting in that they're different. Ultimately, they couldn't convince me for regular use when git works well enough and additional tooling can introduce new complexities and issues when you don't make a full switch. I remember Gitbutler added refs making git use impractical. jj had a barrier to entry, to understand and follow the concepts and process, which I think I simply did not pass yet to have a more accurate assessment.

I did explore TUIs also as no-install-required fallback alternatives, but in practice, I never needed them. When I do use the console, I'm familiar with native git to cover my needs. Remote shell: native git, locally: Nushell on top of native git for mass queries and operations.

[–] sip@programming.dev 2 points 4 days ago* (last edited 4 days ago)

i use git. got a tree alias a tree-like log. and an amend alias to add changes to the prev comit to keep the message

[–] mesamunefire@piefed.social 3 points 5 days ago* (last edited 5 days ago) (1 children)
[–] pprkut@programming.dev 2 points 5 days ago

One more vote for SourceGit. It is very feature-rich and intuitive.

[–] SkaveRat@discuss.tchncs.de 2 points 5 days ago

SCM breeze. Lots of qol features I can't love without

[–] mcmodknower@programming.dev 3 points 5 days ago

i use the standard git cli mostly, and sometimes the magit package for emacs (but only when i am also working in emacs already)

[–] ulterno@programming.dev 2 points 5 days ago

git gud :P

I use the CLI mostly.
It gives me confidence that I am not doing something unknowingly.

In some cases, I prefer GUI tools:

  • For blame, I prefer what Qt Creator provides
    • Although it could have been better
  • For graph, the default CLI one is not pretty enough and honestly doesn't help as a graph. So I go with GUI stuff
    • there are quite a few alternatives available that make it much faster to grasp on sight
[–] nek0d3r@lemmy.dbzer0.com 2 points 5 days ago

I just use the git CLI, and sometimes the git graph extension on VSCodium.

[–] shnizmuffin@lemmy.inbutts.lol 3 points 5 days ago

I have a list of these to check out for when I inevitably rage quit VS Code. Here they are:

And then if those suck, I'll just buy SublimeMerge because SublimeText's infinite trial period got me through the Ramen years of undergrad + freelance jdev.

[–] entwine@programming.dev 3 points 5 days ago

Sublime Merge is what I use, mostly for dealing with merge conflicts. For more complex operations I just do it in the terminal, even though I'm sure it supports way more features than I use it for.

It's not FOSS, but it's also not Electron.

[–] ALERT@sh.itjust.works 2 points 5 days ago
[–] Hyperlynx@aus.social 1 points 5 days ago

@altkey just plain Git.

[–] spartanatreyu@programming.dev 1 points 5 days ago

Fork.dev on Windows and Mac

  • GUI using native APIs, no electron
  • It's free the same way that sublime text and winzip are. It asks about once a month if you want to pay and you can keep clicking "I'm still trying it out".
  • Normal git cli is powerful but with a terrible UI with terrible defaults.
    • To use the best commands you need to add a ton of flags to get what you want, or add a whole bunch of aliases and port them between machines.
      • e.g. git log vs git log --graph --all --remotes --decorate
      • e.g. git fetch vs git fetch --prune --all
      • e.g. git stage -p vs nothing (git cli still doesn't have a good way to specify lines correctly, only hunks that can't be split properly)

Fork.dev is just what you get when the defaults are set up correctly by default, with more powerful control over staging, and with automatic branch/stash backups whenever your doing risky actions.

The only thing it doesn't have built in support for is git log -S for when you're searching for a specific file or commit and don't know the file or commit, but know a substring in the commit itself. But it doesn't matter since you can add that as a custom command into fork.dev

[–] hoover900@sh.itjust.works 1 points 5 days ago* (last edited 5 days ago)

Been flopping back forth between Zed and the command line. If on a fresh computer and using GitHub, I like GH to quickly setup my git configs.

[–] chtk@sh.itjust.works 1 points 5 days ago
  • lazygit: a TUI for git. This is my day to day UI for staging, committing, interactive rebases. I have delta configured for diffs in lazygit.
  • neovim (nvimdiff): for diffing, and conflict resolution.
  • vscode/neovim: I whatever functionally my editor had (or some plugins for neovim) for live changes as I work on code.
[–] EarMaster@lemmy.world 1 points 5 days ago

lazygit, VSCode or just git (in that order of preference).

[–] waldfee@feddit.org 1 points 5 days ago

gitui and git-cli, as well as a pretty git log with an awk script to include the shortstat of the commits

[–] SteleTrovilo@beehaw.org -1 points 5 days ago

I've been loving Jujutsu VCS. It's a terminal app, works on all 3 major desktop OSes, and makes it so easy to manage efforts across multiple branches.

Also, jj undo is like a gift from the gods.