lazygit
A terminal UI for git
Built by @jesseduffield on GitHub. This page was written by @iluxav from public sources, last updated for v0.65.0 (2026-09-05), and may lag behind new releases.
Maintain lazygit? Claim itStage single lines, rebase interactively, cherry-pick, bisect, resolve conflicts and undo mistakes in git with one key each, from a terminal window.
What you can do with it
Squash, fixup, drop, reword and reorder commits with an interactive rebase driven by keys.
Add staged changes to an older commit, not just the last one.
Copy commits and paste them onto another branch.
Find the commit that introduced a bug with git bisect, marking commits good or bad.
Move or remove parts of a commit by building a custom patch from it.
Undo and redo git actions using the reflog.
Good to know
Covers actions recorded in the reflog; not working-tree changes.
Create, switch and remove git worktrees.
Show all 18
Show only the commits that touch a path, or by an author.
See the commit graph and compare any two commits.
Bind your own commands, with prompts and menus, to keys.
Show diffs through another renderer such as delta, difftastic or `git diff --color-words`.
Resolve all conflicts in chosen files as ours, theirs or both, or open the external merge tool.
Add a fork's remote by typing its owner, and check out a branch from it.
Open a pull request or commit page on the repository's hosting service from lazygit.
See a GitHub pull request's status next to its branch and open it with one key.
Good to know
GitHub only; needs the `gh` CLI logged in.
Start and finish git flow features, releases and hotfixes, with legacy git-flow or git-flow-next.
Good to know
Needs git-flow or git-flow-next installed.
Reorder, hide and regroup the side panels and their tabs.
Before you upgrade
Newest firstA custom command whose `context` names a context that does not exist is now refused at config load with an error, instead of crashing later.
lazygit migrates these to `git.diffRenderers` and `cycleDiffRenderers` by rewriting the config file and stops with an error if it cannot write it; update a read-only config by hand.
Submitting from the description editor is now `ctrl-enter` (`cmd-enter` on Mac), which not every terminal supports; to keep the old key, set `keybinding.universal.confirmInEditor: [<alt+enter>, <ctrl+s>]`.
Show 3 older
File trees now sort files and folders together (`gui.fileTreeSortOrder: mixed`, was folders first); set it back to keep the old order.
In the files and commit files views, `/` now filters the list by full path instead of searching it; actions on a directory apply only to the filtered files.
The keybinding `files.openMergeTool` is renamed `files.openMergeOptions`; lazygit rewrites the config file automatically on first start.
Release history 10
Filter the keybindings and recent repos menus just by typing.
Details
Typing in the keybindings and recent repos menus filters them; worktrees can be filtered by branch name; the window looks inactive when unfocused. A custom command with an unknown `context` name is now rejected when the config loads.
v0.65.0.
Seeded by @iluxav with Claude Code (canido)
Reorder commits by dragging them with the mouse.
Details
Drag commits or rebase todos to move them, and drag to select a range. `git.pagers` is renamed `git.diffRenderers` with a `type` field (`stdinFilter`, `extDiff`, `rawGit`) and one `command` field; existing configs are rewritten automatically.
Also: The branches list shows a GitHub PR's combined checks state.
v0.64.0.
Seeded by @iluxav with Claude Code (canido)
Rearrange, hide or regroup lazygit's side panels.
Details
New `gui.sidePanels` option to reorder, hide and regroup panels and tabs, and `gui.shrinkSidePanelsToContent`. direnv environments load when switching repos or worktrees; external changes are picked up by polling; `<alt+shift+c>` edits the config file.
v0.63.0; direnv support works when direnv is installed.
Seeded by @iluxav with Claude Code (canido)
Use git-flow-next with lazygit's git flow menu.
Details
Keybindings accept any modifier combination (`<ctrl+alt+shift+x>`) and several keys each; the documented syntax is now `<ctrl+a>` (the older `<c-a>` still works). git-flow-next and GitHub Enterprise pull requests are supported. Groups v0.62.0 and v0.62.1.
Also: `<alt+up>`/`<alt+down>` move commits; the commit graph uses more widely supported symbols.
v0.62.1.
Seeded by @iluxav with Claude Code (canido)
See which branches have a GitHub pull request, and whether it is open, closed or merged.
Details
With `gh` installed and logged in, branches with a pull request show a colored PR icon, and `shift-G` opens it. File trees now mix files and folders by default (`gui.fileTreeSortOrder: mixed`).
v0.61.0; the PR icons need `gh auth login`.
Seeded by @iluxav with Claude Code (canido)
Filter the file lists by path as you type, and stage or diff only what the filter shows.
Details
Typing a filter in the files and commit files views now filters by full path instead of searching; staging, diffs and discards apply only to the visible files. Lines can be removed from a custom patch directly.
v0.60.0.
Seeded by @iluxav with Claude Code (canido)
Open pull requests for repositories hosted on Codeberg.
Details
Codeberg is a supported hosting service for opening pull requests and commits. The merge conflict menu's keep item is on `k` again. Custom command menu prompts take custom keybindings.
v0.58.0.
Seeded by @iluxav with Claude Code (canido)
Add a fork as a remote by typing just its owner's name.
Details
A command adds a fork remote by replacing the owner in the origin URL, and can check out a branch from it. Switching repos triggers a background fetch at once.
v0.57.0.
Seeded by @iluxav with Claude Code (canido)
Resolve every conflict in chosen files as ours, theirs or both from a merge menu, without an external tool.
Details
`M` on a conflicted file now opens a merge options menu (ours, theirs, union, or the external merge tool); a no-ff merge option; several pagers in `git.pagers`, cycled with `|`.
Also: Checkout of the previous branch gives clearer feedback; `gui.skipSwitchWorktreeOnCheckoutWarning`.
v0.56.0.
Seeded by @iluxav with Claude Code (canido)
Starting point
Do the hard parts of git, from staging single lines to interactive rebase, with one key each in a terminal UI.
Details
Starting point: a terminal UI for git with panels for files, branches, commits and stash, run with `lazygit`.
Binary releases, Homebrew, most Linux package managers, or `go install`. Needs git.
Seeded by @iluxav with Claude Code (canido)