
Estratégia de ignorar tudo por padrão avança no Git
A proposta
O texto parte de um problema recorrente: ao trabalhar em um projeto e fazer commits, o desenvolvedor percebe que vem versionando arquivos indesejados - .DS_Store, node_modules, configurações de IDE, documentação de agentes (o autor cita CLAUDE.md como exemplo) ou, pior, variáveis de ambiente. Segue-se então a limpeza constrangedora: adicionar esses arquivos ao .gitignore, removê-los do histórico do repositório e torcer para que ninguém tenha notado.
A alternativa proposta pelo autor é inverter a lógica. Em vez de permitir tudo por padrão e ignorar seletivamente alguns arquivos, o .gitignore passaria a ignorar tudo por padrão e permitir apenas arquivos específicos, por meio do padrão de negação (!).
Como funcionaria na prática
Para um projeto simples em Go, o arquivo ficaria assim: * ignora tudo; !.gitignore libera o próprio arquivo de ignore; !*.go libera os arquivos-fonte Go; !README.md libera o leia-me; !go.mod libera o arquivo de módulo; e !go.sum libera as dependências. A partir daí, qualquer outro arquivo que se queira incluir recebe sua própria linha de exceção.
Com essa configuração, apenas os arquivos explicitamente permitidos seriam rastreados pelo Git, o que elimina commits acidentais de arquivos locais não pretendidos.
Ressalvas
O próprio autor relativiza a recomendação: a técnica não é necessariamente a escolha certa para todo repositório ou todo desenvolvedor, mas uma alternativa a ser explorada. Ele acrescenta que projetos hoje acumulam muito material local - documentos e subpastas ligados a agentes, por exemplo -, o que pode tornar mais fácil começar ignorando tudo. Como ilustração da complexidade atual, menciona um .gitignore de 207 linhas do projeto typescript-go.
Verificação e dica de ferramenta
O texto inclui uma dica prática: para saber se um caminho está sendo ignorado pelo Git, é possível executar o comando git check-ignore -v seguido do caminho do arquivo, o que evita confusão quando um arquivo que se esperava rastrear não aparece no Git. O autor também divulga o lazygit, que descreve como a melhor interface de terminal para Git.