Estou tentando usar um arquivo .gitignore com padrões negados (linhas começando com!), Mas não está funcionando da maneira que esperava.
Como um exemplo mínimo, tenho a seguinte estrutura de diretório:
C:/gittest
-- .gitignore
-- aaa/
-- bbb/
-- file.txt
-- ccc/
-- otherfile.txt
e em meu arquivo gitignore, tenho este:
aaa/
!aaa/ccc/
Meu entendimento (com base nesta página de doc ) é que o arquivo aaa / ccc / otherfile.txt não deve ser ignorado, mas na verdade git está ignorando tudo sob aaa.
Estou entendendo mal esta frase: "Um prefixo opcional! Que nega o padrão; qualquer arquivo correspondente excluído por um padrão anterior será incluído novamente."?
BTW, isso está no Windows com msysgit 1.7.0.2.
Se você deseja excluir tudo em
aaa
, mas incluiraaa/ccc
e tudo abaixo dele, você deve usar:A primeira linha diz ao git para ignorar tudo abaixo
aaa
, a segunda diz a ele para não ignorar a pastaaaa/ccc
que realmente "ativa" a terceira linha que diz a ele para não ignorar tudo abaixoaaa/ccc
.fonte
aaa/ccc
qualquer nível, o que funcionou para mim foi em!aaa/ccc/**
vez de!aaa/ccc/*
Se alguém ainda não está vendo itens não ignorados recentemente em
git status
execução,git update-index
pode ajudar o git a ver as mudanças (pelo menos na versão 1.9.x do gitbash).fonte