CLI tool
jesseduffield/lazygit avatar
jesseduffield/lazygit

lazygit: A Terminal UI That Removes the Ceremony from Git Workflows

lazygit is a terminal interface for staging files, inspecting diffs, managing branches, rebasing, and resolving common Git tasks.

82,364 stars3,037 forksGoMIT

At a glance

What is it?
lazygit is a Go-based terminal interface that turns staging, diffing, branch management, and interactive rebasing into a visual, keyboard-driven process. It targets developers who find raw git commands tedious, but it is not a replacement for understanding git.
Who is it for?
Adopt lazygit if you are a developer who spends significant time in a terminal and wants a visual, keyboard-driven way to stage, diff, and rebase without leaving the shell. Do not adopt it if you prefer GUIs like GitKraken or SourceTree, or if you are new to git and need to learn the underlying commands first.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What lazygit Actually Fixes

lazygit addresses a specific pain: git's command-line interface makes common tasks like staging partial files, interactive rebasing, and branch switching more cumbersome than they need to be. The README's elevator pitch is blunt about this. It complains that interactive rebasing forces you to edit a TODO file in your editor, that staging part of a file requires stepping through hunks with a command-line program, and that switching branches often involves stashing and unstashing when a direct checkout would have worked. The tool is for developers who know git but are tired of the ceremony. It is not a learning aid. If you do not already understand what staging, rebasing, and stashing do, lazygit will not teach you. It simply gives you a visual interface to perform those actions faster.

The Interface as a Workflow Accelerator

lazygit is a terminal user interface, not a GUI. That distinction matters. It runs inside your terminal, so it stays close to your shell and your editor. The README describes it as 'a simple terminal UI for git commands.' The mechanism is straightforward: you launch lazygit inside a repository, and it presents panels for your files, staging area, branches, commits, and stashes. You navigate with keyboard shortcuts and press keys to stage, unstage, diff, commit, rebase, or switch branches. The key advantage is that you do not need to remember the exact syntax for commands like git add -p or git rebase -i. The interface exposes those operations as menu items. The trade-off is that you are adding a layer between you and git. If you are comfortable with the command line, that layer can feel like a speed boost. If you are not, it can feel like another thing to learn.

Getting It Running: Installation and First Launch

The README does not provide explicit installation commands in the visible portion, but it references a Homebrew formula (formulae.brew.sh/formula/lazygit). That means on macOS you can install it with brew install lazygit. On Linux, you would likely download a binary from the releases page or build from source, though the README does not detail those steps in the provided text. Once installed, you run lazygit inside a git repository. The default view shows your working tree and staging area. You can then use the key bindings to stage files, view diffs, and commit. The project has a configuration file, but the README does not specify its path or syntax in the cleaned text. You would need to consult the documentation or the repository's docs folder for that. The lack of explicit setup instructions in the README is a minor friction point for new users, but the project's popularity suggests that the default settings work well enough out of the box.

The Pain Points It Targets: Staging and Rebasing

The README is most specific about two operations. First, staging part of a file. In raw git, you use git add -p to step through hunks. If a hunk cannot be split further but contains code you do not want to stage, you have to edit a patch file by hand. lazygit provides a visual way to view the diff and select individual lines or hunks for staging. Second, interactive rebasing. In raw git, you edit a TODO file in your editor to reorder, squash, or drop commits. lazygit lets you perform those actions with key presses in the commits panel. The README's frustration is clear: these are common tasks that should not require arcane file editing. lazygit does not change how git works internally, it just presents a more direct way to trigger the same underlying commands. That is both its strength and its limitation.

A Real Limitation: It Is a Front-End, Not a Replacement

lazygit is a front-end for git, not a new version control system. That means it inherits all of git's complexity. If you do not understand what a rebase does, or what a merge conflict looks like, lazygit will not help you. In fact, it might make things worse by hiding the underlying commands. The README does not claim to teach git, it claims to make common tasks less painful. Another limitation is that lazygit is a terminal UI, so it is only useful in environments where you can run a full-screen TUI. Over SSH or in a constrained CI environment, it is not practical. Also, the project's configuration system is custom, which means you have to learn its syntax if you want to customize key bindings or colors. That is a cost that is easy to underestimate.

Alternatives: GitKraken and the Raw CLI

The most direct alternative is the raw git command line. It has no learning curve beyond what you already know, and it works everywhere. But it lacks the visual feedback that lazygit provides. A GUI alternative is GitKraken, which offers a graphical view of branches, commits, and diffs, and supports drag-and-drop rebasing. GitKraken is cross-platform and has a paid tier. The difference in approach is fundamental: lazygit lives in the terminal and uses keyboard shortcuts, while GitKraken is a separate application with mouse interaction. If you are already in a terminal and want to stay there, lazygit is the better fit. If you prefer a mouse-driven GUI or need to visualize complex branch histories, GitKraken might be more appropriate. The README does not mention any of these alternatives, but the choice is about your workflow, not about feature parity.

Maintenance, Licensing, and Upgrade Cost

The repository is actively maintained. The last push was on 2026-08-12, and recent releases include v0.64.1, v0.64.0, and v0.63.1, with the latest release following the previous one by about a week. That indicates a steady release cadence. The project is written in Go and licensed under MIT. That means you can use it, modify it, and embed it in commercial products, as long as you retain the copyright notice. The README mentions that maintenance is supported by sponsors and contributors, which suggests the project is community-driven. The upgrade cost is low because it is a single binary. You download a new version and replace the old one. There is no database migration or configuration schema change to worry about, at least not based on the README. The main cost is learning the interface and any custom configuration you have created. If you rely on custom key bindings, you may need to review them after an upgrade, but the project's release notes would be the place to check.

Editorial conclusion

Adopt lazygit if you are a developer who spends significant time in a terminal and wants a visual, keyboard-driven way to stage, diff, and rebase without leaving the shell. Do not adopt it if you prefer GUIs like GitKraken or SourceTree, or if you are new to git and need to learn the underlying commands first. Before adopting, verify that your terminal supports the required key bindings and that you are comfortable with the project's custom configuration format. The project is actively maintained and MIT-licensed, but its value depends entirely on your willingness to learn a new interface for operations you already know.

Official sources

  1. Official README
  2. Project repository
  3. Release notes
Community notes

Community notes