// the find
jesseduffield/lazygit
simple terminal UI for git commands
lazygit is a terminal UI for git that wraps common git operations behind keyboard shortcuts and panels. It's for developers who use git heavily from the terminal but find the raw CLI friction-heavy — especially for interactive rebasing, staging hunks, and managing branches. At 80k stars it's basically the default choice in this category.
The interactive rebase UI is genuinely good — squash, fixup, reorder, and drop commits without touching a text editor or memorizing flags. Staging at the line level (not just hunk level) is something most TUIs get wrong; lazygit gets it right. The custom patch builder lets you surgically extract changes from old commits, which is the kind of thing that would take five git commands and a mistake to do manually. The custom command system is flexible enough that missing features are often just a config entry away, and the undo stack (backed by reflog) gives you a real escape hatch.
The keybinding surface is enormous and there's no good way to discover it incrementally — new users hit a wall of `?` menus that don't teach the mental model. The forked gocui lives in-tree (`pkg/gocui`) rather than pulling from upstream, which means any rendering bugs are the project's problem to fix. GitHub PR integration requires the `gh` CLI to be installed and authenticated, which is a hidden dependency that silently does nothing if missing. Configuration is powerful but the YAML schema is large and underdocumented enough that non-trivial customization requires reading source or the issue tracker.