Lazygit is a simple yet powerful terminal user interface for Git that makes complex version control operations accessible through a keyboard-driven visual interface. Written in Go, it wraps Git's extensive command set in an intuitive TUI that displays files, branches, commits, and stashes in organized panels, eliminating the need to memorize long Git commands or edit interactive rebase TODO files. Lazygit solves the problem of Git's steep command-line learning curve while maintaining the speed and flexibility of terminal-based workflows.
Lazygit supports granular staging at the line and hunk level, interactive rebasing with simple keypresses for squash, fixup, drop, and reorder operations, cherry-picking commits across branches, worktree management, and a comprehensive undo/redo system that tracks every action. It provides contextual keybinding hints, a custom command system for extending functionality, and integrates with diff tools for detailed change review. The interface updates in real-time as repository state changes, providing instant feedback on operations.
Lazygit is designed for developers who want the convenience of a graphical Git client without leaving the terminal. It pairs naturally with terminal emulators like Alacritty, Kitty, and WezTerm, and integrates with editors like Neovim through plugins for seamless Git workflow. Lazygit has become one of the most popular terminal-based Git interfaces, offering a middle ground between the complexity of raw Git commands and the overhead of full GUI applications like GitKraken or SourceTree.