- A ferramenta de UI de Git baseada em terminal
lazygit combina a simplicidade da linha de comando com a intuitividade de uma interface gráfica para oferecer um ambiente de trabalho rápido e consistente
- Projetada com foco em consistência, descobribilidade e interatividade, permite que até iniciantes a utilizem imediatamente, desde que conheçam os conceitos básicos de Git
- Keybindings no estilo vim e uma estrutura visual clara possibilitam navegação rápida e reduzem o tempo gasto em tarefas repetitivas
- Patch por linha, rebase interativo, cherry-pick e mais simplificam operações complexas do Git e aumentam a produtividade
- Baseada em um framework TUI open source escrito em Go, também serve como uma referência valiosa para o design de UX de outras ferramentas de desenvolvimento
Contexto do surgimento do LazyGit
- O autor descobriu a eficiência da ferramenta ao executar o
lazygit por acaso durante experimentos com Neovim
- Depois disso, migrou todo o seu workflow de Git para o
lazygit
- Antes, usava uma combinação de
git gui, gitk e CLI, mas passou a buscar alternativas por causa de interfaces antiquadas e instabilidade
- O
lazygit é simples, rápido e estruturado de forma compatível com a CLI, o que garante confiabilidade
Principais características do LazyGit
Consistência
- A interface é composta por vários “view boxes”, mantendo sempre a mesma estrutura visual
- Ao selecionar uma caixa à esquerda, o conteúdo à direita muda de forma vinculada
- Usa terminologia e abstrações do Git tal como são, reduzindo a curva de aprendizado
- Ex.: conceitos padrão do Git como
bisect e hunk podem ser assimilados naturalmente
- Adota keybindings do vim (
h/j/k/l, q, /, y, c, a, f, p, r etc.), permitindo operações rápidas
- Limita o número de comandos e segue a filosofia Unix de “fazer uma coisa bem feita”
Descobribilidade
- Ao iniciar, exibe imediatamente as informações necessárias
- Repositório atual, branch, estado do staging, commits recentes, stash, último comando, atalhos etc.
- Apresenta informações sem sobrecarga visual, minimizando a troca de contexto
- É possível verificar os atalhos imediatamente pelo rodapé ou pela tecla
?
- O usuário pode entender intuitivamente sua posição e estado atuais a qualquer momento
Interatividade
- Guia operações complexas do Git por meio de uma interface interativa
- Ex.: ao fazer push, alerta sobre diferenças com o upstream; ao fazer rebase, pergunta se deve ser interativo
- Durante processos como rebase, resolução de conflitos e troca de branch, faz confirmações automáticas e sugere ações seguintes
- Permite operar por combinações de teclas sem precisar digitar diretamente comandos como
pick/drop/squash
- Com o mínimo de interrupção, aumenta a confiança do usuário e a velocidade de trabalho
Workflow de Git aprimorado
- O
lazygit não adiciona um novo workflow, mas melhora o uso dos recursos existentes do Git de forma mais segura e rápida
- O recurso de seleção de patch por linha e por hunk permite restaurar código com granularidade fina
- É possível reverter ou separar apenas parte de um commit
- Exemplos de workflows principais com atalhos
- Editar e fazer push de um commit existente:
2 space A P enter
- Criar e fazer push de um novo commit:
2 space c <título> P
- Fazer rebase de branch:
3 r i ... m c
- Excluir commit:
4 d
- Dividir commit:
4 enter enter <c-p> n <título> enter
- Cherry-pick:
3 4 C 3 4 V
- Com o uso repetido, os atalhos se tornam um hábito natural e a velocidade de trabalho aumenta drasticamente
Lições para UX em ferramentas de desenvolvimento
- A simplicidade, consistência, descobribilidade, padrões sensatos e interatividade do
lazygit são ótimos princípios de design para ferramentas de desenvolvimento
- Capacidade profunda de configuração, extensibilidade e um ecossistema saudável de contribuições open source são mantidos de forma equilibrada
- Baseado em um framework TUI (
gocui) escrito 100% em Go, podendo ser aproveitado no desenvolvimento de outras ferramentas
- Mostra a possibilidade de criar novas ferramentas CLI/TUI aplicando padrões de UX semelhantes
Conclusão
- O
lazygit é visto não apenas como uma simples UI de Git, mas como um caso exemplar de produtividade para desenvolvedores e design de UX
- Mesmo com o avanço de recursos assistidos por IA, continua tendo um papel central em áreas de controle de versão que exigem precisão e confiabilidade
- Segue evoluindo continuamente por meio das contribuições e da colaboração da comunidade open source
- Qualquer pessoa pode usar e contribuir, com uma experiência de Git rápida e intuitiva
1 comentários
Comentários no Hacker News
Antes eu gostava de TUIs de git focadas em teclado como magit, neogit e lazygit
mas agora uso jujutsu(jj) no lugar do git
Depois que me acostumei com a CLI do jj, comecei a usar o jjui
Preciso dividir commits com frequência, e o plugin hunk.nvim é muito útil
E para resolver conflitos com jj conflict, o jj-diffconflicts é o melhor
Agora, com o jj, dá para editar o gráfico de commits com a mesma naturalidade de mover linhas de código
Quando removo hunks desnecessários de um commit antigo, isso acaba gerando conflitos em cascata nos commits seguintes; queria saber se existe alguma ferramenta que lide com isso automaticamente
Gosto de como o diff fica separado por arquivo, e esse é o único motivo
Ainda assim, queria que existissem mais GUIs dedicadas ao jj. Uso o gg quando quero ver várias mudanças de uma vez, mas ele não tem side-by-side diff
Depois de ver vídeos do git butler, fiquei pensando que seria ótimo se a UI do jj evoluísse nessa direção
Seria muito bom ter uma GUI onde desse para arrastar mudanças ou fazer split/rebase de forma interativa
Cada equipe tem um fluxo de git diferente, e os desenvolvedores acabam se prendendo a micro-otimizações inúteis ou relutam em aprender
No fim, isso cria uma situação em que cada time precisa de um especialista em git
Eu preferiria uma ferramenta que simplesmente impusesse um único jeito de trabalhar
Pode parecer engraçado, mas entre todas as UIs de git que já usei, nenhuma foi tão boa quanto o SourceTree
Para tarefas simples, ele é muito mais agradável que a CLI, e a visualização de estado dos arquivos e do histórico é excelente
Também é fácil fazer stage/unstage por hunk ou por linha
Só é uma pena não existir versão para Linux. Já testei outras ferramentas, mas sempre acabo voltando
Recentemente também usei o lazygit, e entre as TUIs ele é bem competente
Ela não tem atualização automática, então não entra em conflito com a CLI
Documentação de Commit do Git Extensions
Já perdi muito tempo com inúmeros bugs e problemas estranhos. Por favor, abandonem o SourceTree
Quanto mais eu uso git diretamente, mais sinto o quão irracional é a interface da CLI do git
Estou usando jj há dois anos e acho que não consigo mais voltar para a CLI do git
Vejo gente se confundindo com git e criando problemas com tanta frequência que acabo recomendando simplesmente usar outra coisa
Gosto de dividir mudanças e commitar a partir do editor, mas o jj ainda tem integração fraca com editores, então meus commits acabam ficando bagunçados
Muita gente evita pelo nome, mas o GitHub Desktop é muito bom
Funciona bem até com repositórios fora do GitHub, e é fácil editar commits e fazer cherry-pick por arquivo ou por linha
Como ele explica cada operação mais complexa, é especialmente bom para iniciantes
Faltam recursos de merge e de gráfico, mas mesmo assim acho muito melhor do que a CLI do git
Quando entra alguém novo no time, eu sempre faço a pessoa usar o GH Desktop. Tem menos erros e o entendimento vem mais rápido
Para quem não tem confiança com git, é a melhor escolha
Por outro lado, já vi muitos desenvolvedores juniores confiantes demais no git destruírem repositórios
Por isso recomendo fortemente o GH Desktop para o time
Muita gente que usa git não conhece o git-absorb
Ele se encaixa bem em qualquer fluxo de git e reduz bastante a dor de ajustar mudanças staged distribuindo-as entre vários commits
A maioria das TUIs não tem esse tipo de recurso
Não gosto muito de ferramentas baseadas em Rust porque trazem dependências demais
Perdi a confiança e acabei parando de usar. O fato de agir de forma mágica demais acaba sendo desconfortável
Eu ainda prefiro o tig
Tem menos recursos, mas a UI é simples e rápida
Uso principalmente para adicionar coisas ao índice de forma incremental
O VS Code é gratuito, multiplataforma e muita gente já usa
A GUI de git dele também é muito boa e dá conta de todos os fluxos mais comuns
No dia a dia eu uso a CLI, mas quando o projeto já está aberto no VS Code, muitas vezes a GUI acaba sendo mais rápida e intuitiva
A combinação LazyVim + tmux mudou completamente a forma como eu uso git
Configurei para que, ao apertar ctrl-g, o lazygit abra como um tmux floating pane no diretório atual
Assim consigo fazer operações de git na hora, sem entrar no neovim nem trocar de UI
Em um fluxo de trabalho centrado no terminal, essa é a experiência mais flexível e fluida
No
~/.tmux.conf, se você adicionar isso, pode abrir o popup do lazygit comctrl-b ctrl-ge fechá-lo comqEu faço operações de git com comandos de voz + IA. Fora isso, acho que ctrl-r já é UI suficiente
Ninguém comentou ainda, mas o Gitu também é um cliente bem decente