lazygit
Interface de terminal para comandos git, focada em usabilidade e produtividade. Escrita em Go, com licença MIT.
Repositório: https://github.com/jesseduffield/lazygit
Sobre
lazygit é uma TUI (Text User Interface) para git que simplifica operações complexas — como rebase interativo, cherry-pick e patches customizados — através de atalhos de teclado intuitivos, eliminando a necessidade de lembrar comandos git avançados.
Funcionalidades Principais
Staging por linha
space— adiciona linha selecionada ao stagev— seleciona intervalo de linhasa— seleciona o hunk inteiro
Rebase Interativo
i— inicia rebase interativos— squash,f— fixup,d— drop,e— editctrl+k/ctrl+j— mover commit acima/abaixom→continue— finaliza o rebase
Cherry-pick
shift+c— copia commitshift+v— cola (cherry-pick)
Bisect
b— marca commit como good/bad na view de commits
Resetar working tree
shift+d→ opção “nuke” — descarta tudo (inclusive submodules sujos)
Amend em commit antigo
shift+a— amenda commit selecionado com mudanças staged atuais
Filtro
/— filtra qualquer view por texto
Worktrees
wna view de branches — cria worktree a partir do branch selecionado
Patches Customizados
- Seleciona linhas específicas de commits antigos para remover, mover ou aplicar em reverso
ctrl+p— abre menu de opções de patch
Rebase com base marcada
shift+b— marca commit como baserem outro branch — faz rebase trazendo apenas commits acima da base
Undo/Redo
z— desfaz última ação (baseado no reflog)ctrl+z— refaz
Comparar commits
shift+w— marca commit para diff; selecione outro para comparar
Cores dos commits
| Cor | Significado |
|---|---|
| Verde | Incluído no branch master |
| Amarelo | Não incluído no master |
| Vermelho | Não enviado ao upstream |
Instalação
macOS / Linux
brew install lazygitDebian / Ubuntu (versões recentes)
sudo apt install lazygitDebian / Ubuntu (versões antigas — instalação manual)
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | \grep -Po '"tag_name": *"v\K[^"]*')
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/download/v${LAZYGIT_VERSION}/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
tar xf lazygit.tar.gz lazygit
sudo install lazygit -D -t /usr/local/bin/Arch Linux
sudo pacman -S lazygitWindows (Scoop)
scoop bucket add extras
scoop install lazygitWindows (Winget)
winget install -e --id=JesseDuffield.lazygitGo
go install github.com/jesseduffield/lazygit@latestUso
lazygit # dentro de um repositório gitAlias sugerido
echo "alias lg='lazygit'" >> ~/.zshrcMudar de diretório ao sair
Adicione ao ~/.zshrc para que o shell acompanhe a navegação feita dentro do lazygit:
lg() {
export LAZYGIT_NEW_DIR_FILE=~/.lazygit/newdir
lazygit "$@"
if [ -f $LAZYGIT_NEW_DIR_FILE ]; then
cd "$(cat $LAZYGIT_NEW_DIR_FILE)"
rm -f $LAZYGIT_NEW_DIR_FILE > /dev/null
fi
}Configuração
- Arquivo de config: docs/Config.md
- Pagers customizados: docs/Custom_Pagers.md
- Comandos customizados: docs/Custom_Command_Keybindings.md
- Undo/Redo detalhado: docs/Undoing.md
- Keybindings: docs/keybindings
Referências
- Repositório oficial: https://github.com/jesseduffield/lazygit
- Releases: https://github.com/jesseduffield/lazygit/releases
- Tutorial básico: https://youtu.be/VDXvbHZYeKY
- Tutorial rebase magic: https://youtu.be/4XaToVut_hs
- 15 features em 15 minutos: https://youtu.be/CPLdltN7wgE
- Alternativas: GitUI, tig