Most git tutorials teach you more commands. This one is different: it teaches you to need fewer of them.
lazygit is a free, open-source terminal UI that wraps git's full power in a keyboard-driven interface. Created by Jesse Duffield in May 2018, it has grown into one of the most-starred Go projects on GitHub at over 83,000 stars. It runs in any modern terminal, works on macOS, Linux, and Windows, and never replaces git — it just shows you what's going on and lets you act with single keys.
Install it in one line
On macOS, Homebrew handles it:
brew install lazygit
On Windows, use Scoop:
scoop bucket add extras
scoop install lazygit
Arch ships a current package (sudo pacman -S lazygit), and Ubuntu 26.04 was the first LTS to include it in the universe repository, so sudo apt install lazygit works there. No matter your platform, you can grab a prebuilt binary from the GitHub releases page and drop it in your PATH. The latest stable release is v0.66.x.
The panels
Run lazygit inside any repository and you get a split view: files on the left, with your commit graph, branches, and stashes one keypress away. The whole thing is navigable by arrow keys and letter shortcuts, so nothing leaves your muscle memory.
Here's what makes it click.
Stage exactly what you want. Press space on a file to stage it, then enter to see the diff. To stage only part of a change, select lines with v and press space — you get precise, hunk-level control that would otherwise mean typing git add -p and answering prompts by hand.
Squash without the TODO file. Hit i to start an interactive rebase, then use single keys on each commit: s to squash, f to fixup, d to drop, e to edit. Move commits up and down with ctrl+k and ctrl+j. No editing a pick/squash list in a text editor; no remembering the exact flag order.
Undo anything. This is lazygit's quiet superpower. Every action it performs goes through its own redo/undo system, so a mistaken rebase or an accidental delete isn't a crisis. Press u and the last operation rolls back. Git itself has no built-in "undo that command"; lazygit tracks the operations for you.
Worktrees, painlessly. Press w in the branches view to create a worktree from the selected branch and switch to it. Multiple branches running at once, without stashing or juggling WIP commits.
The honest part
lazygit is a wrapper, not a replacement for understanding git. If you don't know what a rebase does, a faster way to launch one won't save you from a confusing conflict resolution — and the underlying model still matters. But for the 90% of day-to-day work — staging, committing, switching, searching history — it removes the friction that makes people dread git.
It also has a real community behind it: Stefen Haller now maintains the project, and recent releases added dark/light themes and rendered hunks stageable directly from the main diff view. The project is MIT-licensed and the source is easy to read if you want to see how a polished TUI is built.
Install it, run it once in a real repo, and give yourself a week. The first time you fix up a commit with one keystroke, you'll wonder why you ever typed the flags. ```