Tig
Tig é uma interface em modo texto baseada em ncurses para git. Funciona principalmente como um navegador de repositórios Git.
Quando Usar
- Navegação no Histórico do Git via Terminal: Navegar rapidamente por grafos de commits, branches e tags em ambientes de servidor headless.
- Stage Interativo e Commits Parciais: Revisar diffs, fazer stage de hunks e reverter linhas não stageadas sem sair do terminal.
- Blame e Anotação de Código: Inspecionar autores de commits, timestamps e logs de commit por linha de código (
tig blame). - Auditoria Git Leve: Auditar grandes repositórios Git corporativos através de conexões SSH sem atraso de GUI.
Início Rápido
1. Invocações Comuns
# Abrir grafo de commits da branch principal
tig
# Ver histórico de um arquivo específico
tig caminho/para/arquivo.ts
# Ver diff de alterações não commitadas (visão Status)
tig status
# Visão blame interativa
tig blame caminho/para/arquivo.ts
2. Teclas Essenciais de Navegação
m: Mudar para visão Principal (grafo de commits)s: Mudar para visão Status (stage)d: Ver Diff do commit selecionadob: Visão Blameu: Stage / unstage do arquivo ou hunk de diff selecionadoq: Fechar visão ativa / Sair
Conceitos Principais
Configuração de Produção do Tig (~/.tigrc)
Personalizando cores, atalhos de teclado e layouts de visão:
# ~/.tigrc
# Configurações gerais
set line-graphics = utf-8
set tab-size = 2
set main-view = id date:relative author:email-user commit-title:graph=yes,refs=yes
set diff-view = line-number:yes,interval=5
set status-view = line-number:yes
# Atalhos de teclado: Navegação Vim
bind generic j move-down
bind generic k move-up
bind generic g move-first-line
bind generic G move-last-line
bind generic <Ctrl-f> page-down
bind generic <Ctrl-b> page-up
# Ações rápidas
bind main <Enter> view-diff
bind status u stage-update
bind status s stage-update
bind status c !git commit -v
Visão Stage Interativa e Hunk Staging
Navegando pela Visão Status para revisar e fazer stage de alterações:
# Abrir Tig diretamente no modo status
tig status
# Teclas na Visão Status:
# - Pressione 'u' para stage/unstage de um arquivo ou hunk
# - Pressione 'Enter' para abrir a visão diff do arquivo selecionado
# - Pressione '1' para stage de linha individual
# - Pressione 'c' para abrir o editor e criar um commit
Investigando Regressões com tig blame
Rastreando modificações de linha através do histórico do repositório:
# Iniciar visualizador blame interativo para um arquivo específico
tig blame src/auth/jwt_validator.go
# Navegação na Visão Blame:
# - Pressione 'Enter' em qualquer linha para ver o diff completo do commit que a introduziu
# - Pressione ',' para blame do commit pai antes daquela alteração
# - Pressione 'q' para retornar à visão anterior
Padrões Comuns
Atalhos Customizados do Tig (~/.tigrc)
Problema: Stage, rebase e checkout de branch rápidos no terminal.
Solução: Defina hotkeys customizados em ~/.tigrc.
# ~/.tigrc
# Vincular 'F' para fetch da origin
bind generic F !git fetch origin
# Vincular 'C' na visão status para commit rápido
bind status C !git commit -v
# Vincular 'P' para push da branch atual
bind generic P !git push origin HEAD
Melhores Práticas (2026)
- Faça configure
main-viewem~/.tigrccomcommit-title:graph=yes,refs=yespara exibir hierarquias de branch claras. - Faça use
tig blamepara descobrir rapidamente qual PR ou commit introduziu uma linha de código problemática. - Faça utilize
tig statuspara revisar e fazer stage de hunks de linha individuais (1) para commits Git granulares e limpos. - Faça remapeie as teclas de navegação padrão para
j/kno.tigrcse estiver acostumado com atalhos do Vim. - Não deixe conflitos de merge não resolvidos abertos no Tig; use o Tig para visualizar o status do conflito e resolva no seu editor.
- Não execute visões pesadas de histórico completo do Tig em repositórios com vários gigabytes sem especificar limites de branch ou caminho.
- Não esqueça de pressionar
qpara subir na hierarquia de visões sem encerrar a sessão.
Solução de Problemas
| Erro / Sintoma | Causa | Solução |
|---|---|---|
| Cores difíceis de ler no terminal | Conflito de contraste do tema do terminal com a paleta padrão do Tig | Configure cores customizadas em ~/.tigrc (ex.: color diff-stat green default). |
| Tig abre na raiz errada do repositório Git | O diretório de trabalho atual está dentro de um submódulo ou fora do repositório | Verifique git rev-parse --show-toplevel antes de invocar tig. |
cannot open file: ... na visão blame | O arquivo foi renomeado ou excluído na árvore de trabalho | Passe a referência do commit explicitamente: tig blame HEAD~2 -- caminho/para/arquivo. |