# LazyGit
LazyGit is a terminal-based user interface (TUI) for [[Git]] written in Go by [[Jesse Duffield]]. It provides a visual, keyboard-driven way to perform Git operations without memorizing complex commands. The interface shows files, branches, commits, and stashes in separate panels, making repository management intuitive.
LazyGit simplifies complex Git workflows like interactive rebasing, cherry-picking, and conflict resolution through its visual interface. It's particularly useful for developers who prefer staying in the terminal but want a more visual Git experience than the command line provides.
## Key Features
- **Visual staging**: Stage individual lines or hunks interactively
- **Branch management**: Create, checkout, merge, rebase visually
- **Interactive rebase**: Squash, reorder, edit commits with ease
- **Conflict resolution**: Side-by-side diff view for merge conflicts
- **Stash management**: Save and apply stashes visually
- **Commit graph**: Visual branch history and relationships
- **Custom commands**: Extensible with user-defined shortcuts
## Installation
```bash
# macOS
brew install lazygit
# Arch Linux
pacman -S lazygit
# Ubuntu/Debian
sudo add-apt-repository ppa:lazygit-team/release
sudo apt update && sudo apt install lazygit
# Go install
go install github.com/jesseduffield/lazygit@latest
```
## Basic Usage
```bash
# Launch in current repository
lazygit
# Launch in specific repository
lazygit -p /path/to/repo
```
## Key Bindings
| Key | Action |
|-----|--------|
| `space` | Stage/unstage file |
| `c` | Commit |
| `p` | Pull |
| `P` | Push |
| `b` | Branch menu |
| `?` | Help |
## References
- https://github.com/jesseduffield/lazygit
## Related
- [[Git]]
- [[Linux]]
- [[GitHub]]
- [[GitLab]]