lazygit — a terminal UI that makes git make sense
Git’s CLI has 200 verbs and none of them are "show me the state of the repo." Lazygit is one full-screen view where you can stage hunks, rebase, and undo — without memorizing another flag.
Every git user hits the same wall: the CLI is powerful but its mental model lives entirely in your head. Lazygit puts the whole repository on one screen — files, branches, commits, and stash as side panels, a diff on the right — and lets you act on any of it with single keys. Space stages a file; the same key stages one hunk when the cursor sits inside a diff. Press c to commit, shift-P to push, p to pull. The superpower is z: undo, backed by an internal reflog of every lazygit action — a bad squash or a botched commit amend is one keypress from gone. It runs entirely on top of plain git, in any repo, over SSH, with no daemon or cloud component.
//install
# macOS
brew install lazygit
# Debian/Ubuntu: no official apt package — grab the .deb or # binary from the GitHub releases page
# Fedora
sudo dnf install lazygit
# Arch
sudo pacman -S lazygit
//examples
# Open lazygit in the current repo lazygit # Jump straight in, focused on a panel: status/branch/log/stash lazygit status lazygit log # Work with a repo you're not cd'd into lazygit -p /srv/deploy/mysite # Only commits touching this path — great for archaeology lazygit -f src/api # Start with the focused panel maximized lazygit --screen-mode=full # Print the full default config (see what you can rebind) lazygit --config | less # Generate shell completions lazygit completion bash
//pro tip
Undo (z) has a sibling: shift-Z is redo. Together they make the history panel a playground — you can try an interactive rebase with i, watch it go sideways, and press z until the repo pretends it never happened. Experimenting safely IS the workflow.
//honest limits
Lazygit is a viewer and driver for git, not a replacement for
understanding git — a failed rebase will still hand you a conflict
and expect you to know what a rebase is. It covers the common 90%:
things like git worktree or writing your own merge strategies are
still terminal jobs. It’s a TUI, so it wants a real terminal; don’t
plan on it inside CI or scripts. And if your muscle memory is
"commit -a && push" in four seconds flat, the first hour of
panel-navigation will feel slower — it pays off from commit two
onward.
=====================================================================