O GitUI oferece o conforto de uma GUI no terminal
- Operação rápida e intuitiva apenas com o teclado
- Sem necessidade de decorar atalhos, com ajuda contextual
- Revisão de alterações, commit, emenda de commit (com hooks: pre-commit, commit-msg, post-commit, prepare-commit-msg)
- Stage, unstage, reversão e reset de arquivos, hunks e linhas
- Stashing (salvar, aplicar, excluir, inspecionar)
- Push/fetch de remotos
- Lista de branches (criar, renomear, excluir, checkout, remotos)
- Navegação/busca no log de commits, verificação do diff de alterações commitadas
- UI de terminal responsiva
- API assíncrona do git para uma operação fluida
- Suporte a submódulos
Motivação
- Embora a maioria das tarefas de git seja feita no terminal, GUIs de git são usadas com frequência para alguns casos de uso, como índice, commit, diff, stash, blame e log.
- GUIs de git populares em repositórios grandes muitas vezes deixam de responder ou se tornam inutilizáveis.
- O GitUI oferece a experiência de uso e o conforto de uma GUI de git dentro do terminal, sendo ao mesmo tempo portátil, rápido, gratuito e de código aberto.
Benchmark
- Em uma apresentação no meetup RustBerlin,
lazygit, tig e gitui foram comparados analisando todo o repositório git do Linux (com mais de 900 mil commits):
gitui: 24 segundos ✅, 0.17GB de memória ✅, binário de 1.4MB, sem travamentos ✅, sem crashes ✅
lazygit: 57 segundos, 2.6GB de memória, binário de 16MB, com travamentos, crashes ocasionais
tig: 4 minutos e 20 segundos, 1.3GB de memória, binário de 0.6MB ✅, travamentos ocasionais, sem crashes ✅
Roadmap para a versão 1.0
- Objetivos de alto nível antes de declarar a versão
1.0:
- Visualização da estrutura de branches na aba de log (#81)
- Rebase interativo (#32)
Limitações conhecidas
- Sem suporte a repositórios esparsos (sparse repo) (#1226)
- Sem suporte a assinatura GPG (#97)
- Sem suporte a git-lfs (#1089)
- O credential.helper necessário para https deve ser configurado explicitamente (#800)
- Atualmente, esta ferramenta não substitui totalmente o git shell, mas os dois trabalham bem juntos.
- A prioridade do
gitui está em recursos menos confortáveis de usar no git shell, como stashing e stage de linhas ou hunks.
- No fim, talvez seja possível transformar o
gitui em uma solução completa, mas para isso é preciso ajuda — por enquanto, é um projeto de tempo livre.
- Todo apoio e patrocínio são bem-vindos! ❤️
Instalação
- O GitUI está em beta e pode ter bugs e recursos ausentes. Ainda assim, é bastante estável para uso pessoal e já é usado durante o próprio desenvolvimento.
- É possível instalá-lo por meio de vários gerenciadores de pacotes.
Build
- Versão mínima suportada de
rust/cargo: 1.65
- Requisitos para compilar a dependência openssl (consulte https://docs.rs/openssl/latest/openssl/)
- Python é necessário para executar a suíte completa de testes (deve poder ser chamado como
python)
- A forma mais simples de compilar e instalar o
gitui é com cargo install gitui.
Perguntas frequentes (FAQs)
- Consulte a página de FAQs
Diagnóstico
- Ao executar
gitui -l com o logging ativado, os logs serão registrados.
Tema de cores
- O
gitui funciona automaticamente tanto em terminais com tema claro quanto escuro.
- É possível personalizar tudo conforme sua preferência.
Key bindings
- Os atalhos de teclado podem ser personalizados.
Patrocínio
Inspiração
- Inspirado em
lazygit, tig, GitUp e outros.
- Seria interessante pensar em como disponibilizar uma visualização em mapa em ferramentas de terminal.
Opinião do GN⁺
- O GitUI oferece a conveniência de uma GUI para quem prefere o terminal, ao mesmo tempo em que se destaca pela velocidade e pelo baixo uso de memória. Isso é especialmente importante ao lidar com repositórios grandes.
- Como projeto de código aberto, continua evoluindo com o apoio e as contribuições da comunidade de desenvolvedores, incorporando feedback dos usuários para melhorar seus recursos.
- O GitUI parece ser uma ferramenta que ajuda desenvolvedores a trabalhar com git de forma eficiente mesmo em ambiente de terminal, sendo especialmente útil para quem já está acostumado à operação por teclado.
1 comentários
Comentários do Hacker News