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.

83,875 stars3,258 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 November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • jesseduffield/lazygit83,875 ★ · +3,058
Star history
Repository2026-07-282026-11-13
jesseduffield/lazygit80.8k83.9k

3,058 Stars in the last 108 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial 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 references a Homebrew formula (formulae.brew.sh/formula/lazygit) and the GitHub releases page. A Homebrew formula means you can install it with brew install lazygit, and the repository also contains a Makefile with build and install targets (go build, go install) for building from source. 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 repository has a docs/ folder for further documentation.

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. In a constrained CI environment without an interactive terminal, 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, a separate application rather than a terminal UI. The difference in approach is that lazygit lives in the terminal and uses keyboard shortcuts. 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 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-10-31, and recent releases include v0.66.2, v0.66.1, and v0.66.0, with the latest release following the previous one by about five days. 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. 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.

Frequently asked questions

What is a lazy Git?

lazygit is a terminal interface for staging files, inspecting diffs, managing branches, rebasing, and resolving common git tasks, described on its front page as a simple terminal UI for git commands. It is written in Go, MIT licensed, and its default branch is master.

Is LazyGit good for beginners?

The visible part of the README makes no claim about skill level. What it argues is that git is capable but awkward in daily use, citing interactive rebasing that requires editing a TODO file in an editor, staging part of a file that means stepping through hunks, and editing a patch file by hand when a hunk will not split further.

how to install lazygit

The README links the Homebrew formula at formulae.brew.sh/formula/lazygit, the GitHub releases page, and a separate latest-release badge. The most recent releases are v0.66.2, v0.66.1, and v0.66.0, and the module requires Go 1.26.0.

how to use lazygit in neovim

The visible part of the README does not mention a Neovim integration. What the repository does ship is a JSON schema under schema/ and schema-master/, a .vscode/ directory, and AGENTS.md and CLAUDE.md at the top level alongside a vendor/ directory of committed dependencies.

Which is better, GitUI or lazygit?

The visible part of the README does not compare lazygit with other git interfaces. It links a golangci-lint badge and a Homebrew formula badge, and its build files point to generated cheatsheets and a JSON schema produced by go generate.

Official sources

  1. Official README
  2. Project repository
  3. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/jesseduffield-lazygit.svg)](https://hysenlabs.com/projects/jesseduffield-lazygit)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/jesseduffield-lazygit.svg)](https://hysenlabs.com/projects/jesseduffield-lazygit)

Was this useful?