stamatios
← Voltar ao feed
Portão que se abre apenas para pacotes aprovados numa esteira, metáfora da abordagem de ignorar tudo por padrão no Git
Dev & Engenharia

Estratégia de ignorar tudo por padrão avança no Git

resumo de ~3 min

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.