lazygit
FreeA Git interface in your terminal — no more memorizing rebase flags
A terminal user interface for Git. See branches, commits, the staging area and file changes in one window, and stage, commit, switch branches, merge, rebase, cherry-pick and undo with single keystrokes. It supports line-by-line staging and interactive rebase, and actions can be undone. The Windows archive is about 7 MB.
Why we picked it
Git's command line is powerful, but some operations carry real mental overhead: interactive rebase
means remembering flags, committing three lines out of one file means stepping through
git add -p, seeing branch topology means typing git log --graph --oneline --all, and undoing a
slip means looking up how reflog works again.
lazygit wraps all of that in a terminal interface. 81,337 stars, MIT, a single Go binary — the Windows archive unpacks to about 7 MB.
What it saves most in daily use:
- Line-by-line staging. Open a file's diff, arrow to the lines you want and press space to stage them. Splitting one messy change into several clean commits is its most-praised feature.
- Visual interactive rebase. Press a key on a commit in the list to squash, fixup, drop, reword or edit — no editing the rebase todo file.
- Undo. Press
zto undo the last operation, implemented on top of reflog. For "that keystroke was a mistake", this beats looking reflog up yourself. - Everything on one screen. Branch, commit and staging panels on the left, diff on the right — switching branches, inspecting what a commit changed and comparing branches all happen in one view.
It does not simplify Git so much as make Git's existing capabilities visible and clickable.
Every action maps to a real git command (press @ to see what it ran), so using it does not erode
your Git knowledge.
To be clear about:
- It is a terminal program, not a desktop GUI. Anyone who wants windows and drag-and-drop should look at GitHub Desktop or Git Extensions instead.
- Git must be installed. This is an interface to Git, not a replacement for it.
- Keybindings take a day or two to become muscle memory. Press
xat any point for a context-sensitive keybinding list, so there is nothing to memorize. - It does not do forge features. Pull requests, issues and reviews belong to the web interface
or the
ghcommand.
If you use Git every day and still type out the complicated operations by hand, this will probably save you a meaningful amount of time.