LeGit

Free · GPL-3.0 · Windows · macOS · Linux

Your git.
Your layout.
Your colors.

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.

v1.0.1 Tauri 2 · Rust + React No account, no telemetry

The LeGit window: branch list, commit graph, changed files and a side-by-side diff.
Why it exists

Every Git client I tried failed one of these.

Four ways a Git client wastes your day. Each one was reason enough to stop using something.

✕

Ancient or abandoned

Last release years ago, issues unanswered, and a window that still assumes your habits from 2011.

✕

Unasked-for AI

Commit-message generators wired to somebody's cloud, bolted onto a tool whose whole job is running git.

✕

Diffs in red and green

The most important color distinction in the entire tool, invisible to a red-green colorblind reader, and not editable.

✕

A subscription to push

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.

The window is yours

Built out of panels you arrange yourself.

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.

Commits

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.

Theme Editor

Repaint every token

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.

Diff

Inline, split, or chunk by chunk

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.

Git Command Log

Nothing happens off the books

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.

Working Changes

Guardrails, if you want them

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.

Files

Line endings, caught early

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.

Theming

Five themes ship with it. Here is each one.

The same window, the same repository, the same diff, captured in every bundled theme. Pick one.

The LeGit window in the Dark theme.

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.

Color that carries information

Diffs you can read when red and green look the same.

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.

runner.rsgit defaults
 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.

runner.rsLeGit defaults
 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.

Also in the box

The rest of git, not just the happy path.

Interactive rebase Merge conflict resolution Cherry-pick, merge commits included Blame File history Branch compare Submodules Per-file stashing Tags Reflog Undo last commit Git LFS awareness SSH passphrase prompts Credential prompts Multiple repositories as tabs Per-repo and global settings
Full disclosure

How this thing is actually built.

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.

It never edits a repository by hand

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.

There is a real test suite

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.

It's in daily use

By the person who wrote it, on the repositories he works in, including this one.

Get it

Grab a build.

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.

Free, and staying free.

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.