TopGit
GitHub Repo Review

Lazygit: Terminal Git UI for Staging and Rebasing

LTopGit review image for jesseduffield/lazygit
Review by Topgit.dev for jesseduffield/lazygit, with GitHub repository stats and README context.
Quick verdict

Lazygit turns git's command-line rituals into single keypresses: space to stage a line, i to start an interactive rebase, z to undo. It gets git's more fiddly operations — partial staging, TODO-file rebases, patch splitting — right where the plain CLI makes you fight your editor. The one place it can bite you: undo relies on the reflog, so it can't restore working-tree or stash changes, only commits and branches.

Stars
★ 83.2k
Forks
⑂ 3.1k
Language
Go
License
MIT
Topic
Frontend
Updated
Oct 2026
Homepage
—
GitHub

What is Lazygit?

Lazygit is a terminal UI, written in Go, that wraps git's command-line workflow in keyboard-driven panels for status, branches, commits, and stash. It runs inside any terminal alongside your existing git and shell setup — no separate GUI app or editor plugin required. The project describes itself as a simple terminal UI for git commands: no PR review workflow, no visual merge tool, just faster access to git's own actions.

Key features

  • ✓Stage individual lines or ranges with space, v to select a range, or a to grab a whole hunk — no stepping through git add -p prompts one hunk at a time.
  • ✓Interactive rebase from a single view: press i to start, then s to squash, f to fixup, d to drop, e to edit, or ctrl+k/ctrl+j to reorder commits, without hand-editing a TODO file.
  • ✓Cherry-pick with shift+c to copy a commit and shift+v to paste it onto another branch.
  • ✓Git bisect from the commits view — mark commits good or bad with b.
  • ✓Worktrees: press w on a branch to create a worktree and switch into it, avoiding stash-juggling when working two branches at once.
  • ✓Custom patches: build a patch from an old commit, then split it into a new commit or apply it in reverse, via the rebase-magic workflow.
  • ✓GitHub pull request indicators in the branches panel (needs the gh CLI installed and gh auth login) — shift-G opens the PR in your browser.
  • ✓Undo and redo commit-level actions with z and shift+z, backed by git's reflog.
How this repository's GitHub stars have grown over time. Source: star-history.com.View the star history ↗

Installing Lazygit

Lazygit ships binary releases for Windows, macOS (10.12 and later), and Linux, downloadable straight from the GitHub releases page. On macOS and Linux, Homebrew works for both: brew install lazygit. Linux users also have distro-native packages — sudo pacman -S lazygit on Arch, sudo apt install lazygit on Debian 13/Trixie and Ubuntu 25.10 and later (older Debian/Ubuntu need the curl-and-tar script from the README), sudo dnf install lazygit via the Copr or Terra repos on Fedora, CentOS Stream, and RHEL derivatives, sudo xbps-install -S lazygit on Void, sudo eopkg install lazygit on Solus, and sudo zypper in lazygit on openSUSE. NixOS users can try it without installing via nix-shell -p lazygit or nix run nixpkgs#lazygit; the repo also ships its own flake. On Windows, install via Scoop (scoop install lazygit from the extras bucket), Chocolatey (choco install lazygit), or Winget (winget install -e --id=JesseDuffield.lazygit). Go developers can skip package managers entirely with go install github.com/jesseduffield/lazygit@latest, adding ~/go/bin to their PATH if the binary isn't found afterward. FreeBSD (pkg install lazygit), Termux (apt install lazygit), and Conda (conda install -c conda-forge lazygit) are covered too.

Running Lazygit

Once installed, run lazygit inside any git repository — no init step or config file is required to get a working panel view of status, files, branches, commits, and stash. Many users alias it, e.g. alias lg='lazygit' in .zshrc, to launch it in two keystrokes. The README links out to a full keybindings reference rather than listing every key inline, but the actions it does document map git's own vocabulary directly onto single keys — space to stage, i to start a rebase, z to undo. If you want your shell to cd into whatever repo you switched to inside Lazygit when you exit, the README documents a shell function that reads a LAZYGIT_NEW_DIR_FILE environment variable, with shift+Q reserved for exiting without switching directories. Lazygit also picks up Gitflow (or git-flow-next) automatically if either is installed, exposing the Gitflow menu with i from the branches view, and its custom command system lets you bind your own shell commands to keys for anything the built-in actions don't cover.

What you can do with it

  • •Staging part of a file's changes hunk by hunk, or line by line, before a commit.
  • •Cleaning up a feature branch with interactive rebase before opening a pull request.
  • •Picking a single commit off another branch with cherry-pick instead of merging the whole branch.
  • •Bisecting a regression by marking commits good or bad from the commits view.
  • •Running multiple branches side by side with worktrees instead of repeated stash and checkout.
  • •Checking which local branches already have an open GitHub pull request without leaving the terminal.

Strengths

  • ✓One key per git action: staging, rebasing, cherry-picking, and bisecting all happen without leaving the panel you're looking at.
  • ✓Interactive rebase without touching an editor's TODO file — squash, fixup, drop, and reorder are direct keystrokes.
  • ✓Worktree creation is a single keypress (w), removing the usual stash-or-commit dance when switching branches.
  • ✓Cross-platform packaging: binaries for Windows, macOS 10.12+, and Linux, plus package-manager installs on most major platforms per the README.
  • ✓Filtering (/) narrows any view — branches, files, commits — so you can jump to what you need in a large repo without scrolling.

Limitations

  • △Undo relies on git's reflog, so it only covers commits and branches — it cannot undo changes to the working tree or the stash, per the README.
  • △GitHub pull request indicators require installing the separate gh CLI and running gh auth login; there's no built-in PR integration.
  • △It's a terminal UI wrapping git's own commands, not a replacement for git — you still need to know git concepts like rebase, stash, and reflog to use it well.
  • △The README's installation section is a long list of third-party packages (Homebrew, AUR, Copr, and more) and tells users to vet each maintainer themselves, since most aren't maintained by the project itself.

Alternatives worth considering

GitUI — a Rust-based terminal git client the lazygit README itself points to as an alternative.tig — an ncurses text-mode interface for git, listed in lazygit's own README as an alternative.

Frequently asked questions

Is Lazygit free and open source?

Lazygit is free and open source: it's released under the MIT license with its full source on GitHub, and no feature sits behind a paid tier.

What operating systems does Lazygit support?

Lazygit ships binary releases for Windows, macOS (10.12 and later), and Linux, and the README also lists Homebrew, MacPorts, Scoop, native Linux distro packages, FreeBSD, and Termux installs.

Can I undo operations in Lazygit?

Lazygit supports undo and redo with the z and shift+z keys, built on git's reflog. That covers commit and branch actions, but per the README it can't undo changes to the working tree or the stash.

How do I install Lazygit on Windows?

On Windows, Lazygit can be installed via Scoop (scoop install lazygit from the extras bucket), Chocolatey (choco install lazygit), Winget (winget install -e --id=JesseDuffield.lazygit), or by downloading a binary release directly.

Does Lazygit work with GitHub pull requests?

Lazygit shows a GitHub icon next to branches that have an associated pull request, colored by PR state, and shift-G opens it in your browser. This needs the gh CLI installed and authenticated with gh auth login.

How is Lazygit different from tig or GitUI?

Lazygit's own README lists GitUI and tig as alternatives if it doesn't fit your needs, without detailing feature differences. All three are terminal git clients; Lazygit's specific install matrix and rebase and cherry-pick keybindings are what set its README apart.

The problem it solves

Plain git makes two everyday tasks miserable: partial staging and interactive rebase. Staging only some lines of a file means running git add -p and stepping through hunks one at a time, and if a hunk mixes wanted and unwanted lines, splitting it further means hand-editing a patch file. Interactive rebase means opening $EDITOR on a TODO file, matching commit hashes by eye, and saving it correctly or aborting the whole rebase. Lazygit turns both into keypresses in one screen. No TODO file. No manual patch file.

Who should try it — and who should skip

Try lazygit if you already know git's concepts — branches, rebase, stash — but resent typing out interactive rebase and git add -p by hand; the keybindings save the typing, not the learning. Skip it if you want a GUI with mouse-driven diffs and a visual merge tool, or if you're fine sticking with plain git on the command line.

Related repositories

Source & attribution

Based on the jesseduffield/lazygit GitHub repository (README, topics, and license).

GitHub data · last synced Aug 14, 2026Reviewed by Henry
← Back to TopGit

Is lazygit worth your time?

ChatGPT, Claude and Perplexity can all read this page. Ask one of them what it makes of lazygit.

GitHub