CAMINHOS E REGRAS DO GIT

Testador de .gitignorecom histórico de decisões

Teste um .gitignore raiz e caminhos candidatos. A barra / final indica uma pasta.

Testador de .gitignore

Regras .gitignore

Caminhos candidatos

As regras e os caminhos ficam neste navegador. Nenhum repositório é lido ou alterado.

Resultados por caminho

Digite pelo menos um caminho.

Convenções de caminhos e escopo

Use caminhos relativos à pasta deste .gitignore, separados por /. Termine pastas com /. Caminhos absolutos, letras de unidade, barras invertidas, segmentos vazios, . e .. são rejeitados. Os espaços são preservados.

Simulação de caminhos não rastreados com um .gitignore raiz e comparação de bytes UTF-8 sensível a maiúsculas. Sem arquivos aninhados, exclusões globais, índice ou consulta ao disco.

Até 50 linhas físicas de regras e 200 caminhos não vazios; 256 unidades UTF-16 por regra, 512 por caminho e 32 segmentos. Controles são rejeitados. O worker para após 2 segundos.

Resultados desatualizados ou cálculo em andamento.

Uma regra de negação pode apontar para o arquivo certo e ainda assim não funcionar. Quando a pasta pai está excluída, o Git não chega ao arquivo. Este Testador de .gitignore identifica esse bloqueio e a linha responsável por ele.

Os dois campos já trazem um exemplo, calculado ao abrir a página. Troque os padrões gitignore e os caminhos de arquivos pelos do seu caso para separar exclusões, reinclusões explícitas e caminhos sem regra aplicável, com o histórico de cada etapa.

Por que usar este Testador de .gitignore

Entenda por que a exceção não passou

build/ exclui a pasta antes de build/keep.txt ser avaliado; !build/keep.txt não consegue recuperá-lo. Já cache/* mantém cache/ acessível, permitindo a reinclusão por !cache/keep.txt. O Testador de .gitignore aponta o ancestral que bloqueia o caminho, sem confundir uma negação escrita com uma exceção efetiva.

Uma pasta fechada bloqueia seus arquivos; outra, aberta, permite que uma exceção preserve um deles.

Acompanhe a ordem que muda o resultado

Um padrão pode excluir o caminho, outro recuperá-lo e um terceiro excluí-lo novamente. O histórico registra o estado após cada linha física, inclusive comentários e linhas vazias. Confira a linha decisiva de cada estado para descobrir se a mudança atingiu o arquivo ou uma pasta acima dele.

Um arquivo passa por três etapas: exclusão, reinclusão e exclusão novamente.

Monte um caso que revele o problema

01

Mantenha uma base comum

Os candidatos são relativos à pasta do .gitignore. Digite build/ para uma pasta e build para um arquivo. Uma / inicial serve para ancorar regras, mas não é aceita no início dos candidatos. Espaços nos nomes são literais e não são removidos automaticamente.

02

Investigue o ancestral bloqueado

Abra o histórico do resultado. Se houver uma pasta pai excluída, reinclua essa pasta primeiro ou restrinja a exclusão aos filhos, como em cache/*. Uma negação aplicada ao filho não atravessa uma pasta excluída. A regra decisiva pode estar várias linhas antes da etapa exibida.

03

Escolha o momento de testar

O modo automático aguarda 350 ms depois da edição. Desative-o para usar Testar regras ou Ctrl/Cmd+Enter. Qualquer edição torna o relatório desatualizado. Exemplo e Limpar mostram uma prévia; Desfazer restaura as entradas e os resultados. O JSON leva também o histórico.

Recursos para investigar os padrões

Correspondência voltada ao Git

O motor ignore 7.0.9 interpreta *, ?, intervalos entre colchetes e **. A camada de comparação usa bytes UTF-8 e distingue maiúsculas: ? cobre um byte, não um caractere multibyte inteiro. Não há expansão de chaves nem um modo extra de expressões regulares.

Linhas que preservam o contexto

Comentários e linhas vazias continuam na contagem. Em cada nó acessível, o último padrão correspondente decide entre excluir e reincluir. Assim, duas regras positivas iguais apontam para a última linha correspondente, mesmo quando a primeira já havia excluído o caminho.

Exportação para duas formas de revisão

O JSON guarda os caminhos originais, o texto das regras e todos os estados calculados por prefixo. O TSV resume tipo, exclusão, linha decisiva, padrão e pasta bloqueadora. Todos os candidatos entram no relatório, mesmo com apenas 50 visíveis. Células TSV parecidas com fórmulas recebem um apóstrofo de proteção.

Limites e convenções da simulação

Um arquivo, sem estado do índice
Este Testador de .gitignore simula apenas caminhos não rastreados e um arquivo raiz. Não combina .gitignore aninhados, .git/info/exclude, exclusões globais ou padrões da linha de comando. Não detecta arquivos rastreados, preparados, links simbólicos ou presença no disco.
Caminhos usados como foram escritos
Use / e marque pastas com a barra final. Caminhos absolutos ou do Windows, segmentos . e .., controles e Unicode malformado são rejeitados. Linhas de candidatos vazias são puladas; uma linha só com espaços é um nome. Escape # ou ! inicial para tratá-lo literalmente. Espaços finais não escapados nas regras são ignorados.
Trabalho com prazo e tamanho definidos
São aceitas 50 linhas físicas de regras, 200 candidatos não vazios, 256 unidades UTF-16 por regra, 512 por caminho e 32 segmentos. Uma quebra de linha final não acrescenta outra regra. O worker é encerrado após 2 segundos. Resultados com erro ou desatualizados não podem ser exportados.
Confirme o caso no repositório
A comparação sempre distingue maiúsculas e usa as APIs públicas do pacote ignore. Nem toda configuração do Git é reproduzida; confira com git check-ignore -v no repositório real. Uma regra sem correspondência nesta amostra pode afetar outros arquivos e não deve ser removida apenas por isso. Apenas ** como segmento completo é aceito; formas como *** ou a** estão fora do escopo deste testador, embora o Git possa interpretá-las.

Dúvidas sobre o Testador de .gitignore

Por que um padrão ! não recupera meu arquivo?

Uma pasta excluída impede que o Git visite os filhos. Reinclua o diretório primeiro ou exclua somente seu conteúdo, por exemplo com build/*, antes da exceção do arquivo. O Testador de .gitignore mostra a pasta bloqueadora e a regra que decidiu sua exclusão.

Como build se diferencia de /build?

build pode corresponder a esse nome em qualquer profundidade. /build fica ancorado na pasta que contém o .gitignore. Uma barra no meio do padrão também o torna relativo a essa base. Teste build e src/build para observar a diferença.

A regra logs/ também ignora um arquivo comum com esse nome?

Não. A barra final limita a regra a diretórios. Digite logs/ como candidato para uma pasta e logs para um arquivo. Essa marcação é necessária porque o navegador não consulta o sistema de arquivos nem deduz o tipo a partir dos outros caminhos.

Como funcionam as três variantes de **?

No início, **/ corresponde em qualquer profundidade; no final, /** alcança os descendentes. No meio, a/**/b aceita zero ou mais diretórios entre a e b. * e ? não atravessam /. Como a comparação usa bytes UTF-8, ? representa um byte, não obrigatoriamente um caractere inteiro.

Por que o Git ainda mostra alterações com uma regra correta?

Um arquivo já rastreado permanece rastreado quando você o adiciona ao .gitignore. A ferramenta avalia caminhos como não rastreados e não conhece o índice. Verifique o estado real com Git antes de interpretar o resultado como uma mudança no controle de versão.

Encontrou um caso que merece revisão?

Confira sua próxima alteração de regras

Use o Testador de .gitignore com um caminho que precisa ser excluído e outro que deve continuar visível. Ao investigar uma exceção, acrescente também a pasta pai.

Guarde o histórico junto da revisão e confirme o resultado no repositório real antes de alterar as regras.