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 stage
  • v — seleciona intervalo de linhas
  • a — seleciona o hunk inteiro

Rebase Interativo

  • i — inicia rebase interativo
  • s — squash, f — fixup, d — drop, e — edit
  • ctrl+k / ctrl+j — mover commit acima/abaixo
  • mcontinue — finaliza o rebase

Cherry-pick

  • shift+c — copia commit
  • shift+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

  • w na 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 base
  • r em 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

CorSignificado
VerdeIncluído no branch master
AmareloNão incluído no master
VermelhoNão enviado ao upstream

Instalação

macOS / Linux

brew install lazygit

Debian / Ubuntu (versões recentes)

sudo apt install lazygit

Debian / 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 lazygit

Windows (Scoop)

scoop bucket add extras
scoop install lazygit

Windows (Winget)

winget install -e --id=JesseDuffield.lazygit

Go

go install github.com/jesseduffield/lazygit@latest

Uso

lazygit        # dentro de um repositório git

Alias sugerido

echo "alias lg='lazygit'" >> ~/.zshrc

Mudar 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


Referências