terminal-life:~$

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
# macOS
brew install lazygit
Debian/Ubuntu
# Debian/Ubuntu: no official apt package — grab the .deb or
# binary from the GitHub releases page
Fedora
# Fedora
sudo dnf install lazygit
Arch
# 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. =====================================================================