>_ josetilabs.com
← blog

25 out 2026 · ferramenta, git · 4 min

Lazygit: dá para usar git no terminal sem decorar comando?

Git tem dezenas de comandos e o fluxo interativo de rebase pede para editar um arquivo TODO à mão. O lazygit coloca tudo em uma interface de terminal: stage por hunk, commit parcial, rebase e resolução de conflito. O roteiro abaixo reproduz essas quatro operações com o git puro, para você ver o que o lazygit está fazendo por baixo. Veja também fzf no terminal e terminal que parece limpo.

O que o lazygit não inventa

O lazygit não cria um git paralelo. Ele chama os mesmos comandos que você chamaria: git add -p, git rebase, git add para marcar resolvido, git rebase --continue. O ganho é de ergonomia: uma tecla para stage de um hunk, outra para amend, outra para rebase interativo com menu em vez de arquivo de texto. Quem já sabe o fluxo do git ganha velocidade; quem não sabe, aprende o fluxo olhando o que o lazygit executa.

A instalação é um binário único (Go), sem runtime. No Debian e no Ubuntu existe pacote em repositório da comunidade, mas a versão costuma atrasar; o binário direto do GitHub é o caminho mais simples. O projeto tem licença MIT e mais de 80 mil estrelas. A interface também mostra o diff lado a lado e permite descartar hunks com uma tecla, o que reduz erros em revisões rápidas.

O artefato

```bash

!/usr/bin/env bash

set -euo pipefail

if ! command -v git >/dev/null 2>&1; then echo “git não encontrado neste ambiente; instale o git para rodar este roteiro” exit 0 fi

W=$(mktemp -d) cd “$W”

echo “=== 1. repositório base ===” git init -q -b main git config user.email “[email protected]” git config user.name “demo” printf ‘linha 1\nlinha 2\nlinha 3\nlinha 4\n’ > arquivo.txt git add arquivo.txt git commit -q -m “base” echo “commit base criado”

echo “=== 2. stage parcial (git add -p) ===” printf ‘linha 1\nlinha 2 modificada\nlinha 3\nlinha 4 modificada\n’ > arquivo.txt printf ‘s\ny\nn\n’ | git add -p arquivo.txt >/dev/null 2>&1 || true echo “— index (o que vai no commit) —” git diff –cached echo “— worktree (o que fica fora) —” git diff git commit -q -m “commit parcial” git checkout – arquivo.txt

echo “=== 3. rebase com conflito ===” git checkout -q -b feature printf ‘feature\n’ > arquivo.txt git commit -q -am “feature change”

git checkout -q main printf ‘main change\n’ > arquivo.txt git commit -q -am “main change”

git checkout -q feature set +e git rebase main >/dev/null 2>&1 rc=$? set -e echo “rebase parou com código $rc (esperado: conflito)” echo “— status —” git status –short

echo “=== 4. resolução ===” printf ‘merged result\n’ > arquivo.txt git add arquivo.txt GIT_EDITOR=true git rebase –continue >/dev/null 2>&1 || true echo “— histórico final —” git log –oneline echo “— arquivo final —” cat arquivo.txt

echo “=== pronto ===”```

O roteiro tem quatro partes. A primeira cria um repositório mínimo. A segunda modifica duas linhas e faz stage de apenas uma, usando git add -p com a resposta s (split) seguida de y e n. A terceira cria dois commits divergentes e roda um rebase que para em conflito. A quarta resolve o conflito, marca com git add e continua com GIT_EDITOR=true para não abrir editor.

Como verificar

Rode bash lazygit.sh. A saída esperada tem UU arquivo.txt, os marcadores <<<<<<<, ======= e >>>>>>>, e termina com merged result. Se o git não estiver instalado, o roteiro imprime uma mensagem e sai com código 0.

Terminal mostrando status UU, arquivo de conflito com marcadores e resolução com git add e rebase continue
Status UU, marcadores de conflito e a resolução com git add e rebase --continue.

Se der errado

Comparação

Ferramenta Vantagem Custo
lazygit Interface rápida para stage, rebase e stash Mais um binário para instalar e atualizar
git interativo (add -p, rebase -i) Já está instalado, sem dependência Comandos longos e arquivo TODO para editar
Cliente gráfico (SourceTree, Fork) Visual para histórico e diff Pesado, e muitos são pagos ou fechados

FAQ

O lazygit substitui o git? Não. Ele é uma camada sobre o git. Os commits, branches e reflogs são os mesmos; você pode alternar entre lazygit e linha de comando no mesmo repositório.

Funciona em servidor sem interface gráfica? Sim, roda inteiro no terminal. É uma das razões para usá-lo em SSH.

Como desfazer uma ação no lazygit? O lazygit tem undo com z para a maioria das operações, inclusive commits e rebases. É um dos pontos fortes em relação ao git puro.

Vale a pena se eu já sei git? Sim, para operações repetitivas como stage parcial e rebase interativo. Para comandos raros, a linha de comando continua mais direta.

E em repositórios grandes? Funciona, mas a renderização do grafo de commits pode ficar lenta em projetos com dezenas de milhares de commits. Ajuste o limite de log nas configurações do lazygit. O lazygit também lista worktrees e permite trocar entre elas sem sair da interface.

Fontes

Leia também

// Por e-mail

Os textos publicados aqui também vão por e-mail. O envio ainda não começou: quem deixar o endereço agora entra na primeira lista.

Guardo só o seu e-mail, a data e o registro desta autorização. Sem cookies, sem rastreador e nada compartilhado com terceiros. Detalhes na política de privacidade.