jesseduffield/lazygit

Developer Tools

A terminal interface for Git that turns staging, rebasing and history edits into guided keyboard actions.

83,502
3,189
Go
MIT
8 years old

lazygit is a terminal UI for Git aimed at developers who work in a terminal but find multi-step Git operations awkward. It does not replace Git: you run lazygit inside an existing repository, and the README states that the commands it executes are printed, so you can watch what Git actually runs README. The project itself is a Go program released under MIT. One early HN commenter specifically valued this visibility and control (2023-07-19) comment.

What changes in the workflow

The core difference is replacing editor-driven or patch-file-driven steps with selection in a list. To stage part of a change, you focus a file's diff, stage whole hunks with space, or switch to line-by-line selection and mark a range; staged content appears in a second pane where space unstages README. Interactive rebase is likewise done in-app: start it, then squash, fixup, drop, edit or reorder the listed TODO commits, or apply one of those actions as a one-off without an explicit rebase README.

Two related mechanisms make history editing less intimidating. "Amend an old commit" runs an interactive rebase in the background after you stage the change README, and "rebase magic" lets you build a custom patch from an old commit and move it into a new commit or drop a single hunk from a commit README. A marked base commit lets you rebase only your feature-branch commits onto a different branch README.

Other useful work

The same views cover cherry-pick, bisect, filtering, worktrees, a commit graph, diffing two commits, and custom keybound commands for features you want to add yourself README. Undo/redo exists but has a clear boundary: it relies on the reflog, so it covers commits and branches, not changes to the working tree or stash README. That matters before using the "nuke" reset option, which discards everything appearing in git status, including dirty submodules README.

Requirements and optional integrations

You need Git and a terminal; binaries cover macOS 10.12+, Windows and Linux, with packages for many distributions, Homebrew, Conda, Go and others README. Building from source requires Go README. The GitHub pull-request display is an optional feature, not part of basic use: it works without configuration for github.com only if the gh CLI is installed and authenticated once, and GitHub Enterprise additionally needs a hostname login and a services entry README. Gitflow support is likewise conditional on having Gitflow installed README.

Scope

lazygit is a front end over Git repositories, not a standalone hosting or review service. Its documented use is local repository operations, configuration and custom commands; the README does not present a server component. The project is active enough to have a broad packaging footprint repository, but stars and board history do not establish reliability for your particular repository. For a judgement, the practical check is whether the printed commands and the undo boundary match how much history rewriting you are comfortable delegating.

Written by AI from the project's README, updated October 29, 2026. The project's own docs are the source of truth.

Hacker News

Show HN: I made a tool that made me faster at Git
▲ 551 · 229 comments · August 5, 2018
Lazygit: A simple terminal UI for Git commands
▲ 395 · 141 comments · November 30, 2021
Lazygit: Simple terminal UI for Git commands
▲ 239 · 79 comments · July 19, 2023