A graph you can follow
Lock a branch to a lane and it stays in that lane, commit after commit, instead of wandering across the graph every time you fetch.
Free · GPL-3.0 · Windows · macOS · Linux
A fast desktop Git GUI that shells out to the git you already have, so behavior and config never drift. Arrange the panels, repaint every token, and read diffs that don't depend on telling red from green.
Four ways a Git client wastes your day. Each one was reason enough to stop using something.
✕
Last release years ago, issues unanswered, and a window that still assumes your habits from 2011.
✕
Commit-message generators wired to somebody's cloud, bolted onto a tool whose whole job is running git.
✕
The most important color distinction in the entire tool, invisible to a red-green colorblind reader, and not editable.
✕
Basic version control behind a paywall, in a client for a tool that is itself free.
So this exists instead. It is free, GPL-3.0-or-later, and it stays that way.
Every part of the window is a dockable panel: drag it, split it, stack it into a tab group, or close it. Your arrangement survives a restart, and the View menu can snapshot it as your default layout to snap back to. Repositories open as tabs you can reorder.
Lock a branch to a lane and it stays in that lane, commit after commit, instead of wandering across the graph every time you fetch.
A theme is a named palette plus token bindings. Edit both live, rename a color and every binding follows, then export the JSON and hand it to a colleague.
Word-level highlighting, full-file context when you need it, and syntax colors that come from the same theme as the rest of the app.
Every action is an ordinary invocation of your installed git, and the command log shows exactly what ran. For anything the UI doesn't cover, there's a console.
You get asked before discarding changes, and warned when you're about to commit onto a detached HEAD or amend a commit you already pushed. Global Settings has the switch if you'd rather not be asked.
When a file's line endings flip, LeGit tells you which ones changed and offers to put them back, before the diff turns into noise.
The same window, the same repository, the same diff, captured in every bundled theme. Pick one.
Every color in the app is a token bound to a named palette entry, which is why a theme is a small JSON file you can edit, export and share. Git Terminal keeps git's own red-and-green on purpose; the built-in Light and Dark themes deliberately don't.
Git's defaults hang the entire added-versus-removed distinction on the one axis a red-green colorblind reader cannot see. LeGit's Light and Dark themes use blue and orange instead, so hue and lightness both change, and every one of those colors is editable anyway.
pub fn commit(&self, msg: &str) -> Result<()> {- self.run(&["commit", "-m", msg])+ self.run(&["commit", "-m", msg, "--no-verify"]) }
Added and removed differ by hue alone.
pub fn commit(&self, msg: &str) -> Result<()> {- self.run(&["commit", "-m", msg])+ self.run(&["commit", "-m", msg, "--no-verify"]) }
Same information, on two axes instead of one.
LeGit is built almost entirely through AI-assisted development, with a human directing, reviewing and testing the result. That's worth knowing before you point it at a repository you care about, so it's on the front page rather than buried in a FAQ.
The author's version: he hired the four fastest programmers he knew, Claude and his three subagents Claudette, Claudio and Klaus, then had to let the subagents go, because they kept ignoring instructions.
Every operation is an ordinary invocation of your own git executable. LeGit cannot do anything stranger to a repository than a git command already can.
Unit tests, a layer that asserts the exact sequence of git commands a flow must run, and an integration suite that replays every flow against the real git binary.
By the person who wrote it, on the repositories he works in, including this one.
Installers live on the GitHub releases page. Prefer to build it yourself? You need Rust 1.77+, Node 20.19+, git on your PATH, and the Tauri v2 prerequisites for your platform.
Builds aren't code-signed yet.
On first launch Windows SmartScreen may object: choose More info, then Run anyway. On macOS, right-click the app and choose Open.
No subscription, no account, no telemetry, and no paid tier holding push hostage. If LeGit saves you time and you feel like putting something in the hat, the button is here. It changes nothing about the app, and code or bug reports are worth more.
Card payments handled by Stripe. LeGit stays free either way.
The donation button loads from js.stripe.com, which this browser is blocking. Allow it and reload, or head to the repository instead.