Eu tenho um arquivo gitignore que faz o git ignorar *.dllarquivos, e esse é realmente o comportamento que eu quero. No entanto, se eu quiser uma exceção (ou seja, poder confirmar foo.dll), como posso conseguir isso?
fwiw, o avô de respostas duplicadas sobre esse tópico - um que você deve examinar - provavelmente seria Make .gitignore ignorar tudo, exceto alguns arquivos - atividade muito regular e várias boas respostas. Eu sou particularmente fã desta resposta , que parece clara e completa.
Um prefixo opcional! que nega o padrão; qualquer arquivo correspondente excluído por um padrão anterior será incluído novamente. Se um padrão negado corresponder, isso substituirá as origens de padrões de precedência mais baixa.
Veja também formulário de resposta @Matiss Jurgelis - é importante complemento
Dan
7
Posso adicionar a exceção ao gitignore do meu projeto e não ao gitignore global? Por exemplo, se eu quisesse incluir todas as DLLs em um diretório? Meu gitignore_global está *.dllnele, e o gitignore do meu projeto tem, !Libs/*.dllmas isso não parece estar funcionando.
Joel Kinzel #
1
@ jkinz, você deve tentar !Libs/**/*.dll.
Rosberg Linhares
@RosbergLinhares Ou !**/Libs/*.dll, dependendo da estrutura da pasta.
JAB
2
Obrigado, mas em um mac, adicionar o comentário na mesma linha !foo.dllque invalidou o comando. Se eu adicionar o comentário em uma linha separada, ele funcionará.
Giacomo
261
Git ignora pastas se você escrever:
/js
mas não pode adicionar exceções se você fizer:
!/js/jqueryou !/js/jquery/ou!/js/jquery/*
Um prefixo opcional! que nega o padrão; qualquer arquivo correspondente excluído por um padrão anterior será incluído novamente. Se um padrão negado corresponder, isso substituirá as origens de padrões de precedência mais baixa.
Se você estiver trabalhando com o Visual Studio e a sua .dll estiver em uma binpasta, será necessário adicionar uma exceção para a própria pasta bin, antes de poder adicionar a exceção para o arquivo .dll. Por exemplo
Isso ocorre porque o .gitignorearquivo padrão do Visual Studio inclui um padrão de ignorado para[Bbin]/
Esse padrão está zapeando todas as pastas da lixeira (e, consequentemente, seu conteúdo), o que faz com que qualquer tentativa de incluir o conteúdo seja redundante (uma vez que a própria pasta já foi ignorada).
Consegui descobrir por que meu arquivo não estava sendo excedido executando
Desde o Git 2.7.0, o Git leva em consideração as exceções. Das notas oficiais de lançamento:
Permita que um "! / Abc / def" posterior substitua um "/ abc" anterior que apareça no mesmo arquivo .gitignore para facilitar a expressão "tudo no diretório / abc é ignorado, exceto ...".
Respostas:
Usar:
Do gitignore :
fonte
*.dll
nele, e o gitignore do meu projeto tem,!Libs/*.dll
mas isso não parece estar funcionando.!Libs/**/*.dll
.!**/Libs/*.dll
, dependendo da estrutura da pasta.!foo.dll
que invalidou o comando. Se eu adicionar o comentário em uma linha separada, ele funcionará.Git ignora pastas se você escrever:
mas não pode adicionar exceções se você fizer:
!/js/jquery
ou!/js/jquery/
ou!/js/jquery/*
Você deve escrever:
e só então você pode, exceto subpastas como esta
fonte
!/js/jquery/xyzlib
não será ignorado .../js/*
,!/js/jquery
,/js/jquery/*
,!/js/jquery/xyzlib
? Parece uma maneira bastante engraçada de fazê-lo ... #Você pode simplesmente
git add -f path/to/foo.dll
..gitignore
ignora apenas arquivos para rastreamento usual e coisas comogit add .
fonte
-f
diz git para forçar a adição deste arquivo no repo uma vez que pode ignorá-lo primeiro por causa de sua.gitignore
Para excluir tudo em um diretório, mas alguns subdiretórios, faça o seguinte:
Fonte: https://gist.github.com/444295
fonte
Basta adicionar
!
antes de uma regra de exclusão.De acordo com a página de manual do gitignore :
fonte
!foo.dll
em .gitignore, ou (sempre!)git add -f foo.dll
fonte
Se você estiver trabalhando com o Visual Studio e a sua .dll estiver em uma
bin
pasta, será necessário adicionar uma exceção para a própria pasta bin, antes de poder adicionar a exceção para o arquivo .dll. Por exemploIsso ocorre porque o
.gitignore
arquivo padrão do Visual Studio inclui um padrão de ignorado para[Bbin]/
Esse padrão está zapeando todas as pastas da lixeira (e, consequentemente, seu conteúdo), o que faz com que qualquer tentativa de incluir o conteúdo seja redundante (uma vez que a própria pasta já foi ignorada).
Consegui descobrir por que meu arquivo não estava sendo excedido executando
a partir de uma janela do Git Bash. Isso retornou o
[Bbin]/
padrão.fonte
A solução depende da relação entre a regra de ignorar git e a regra de exceção:
Arquivos / Arquivos em diferentes níveis ou Arquivos / Subpastas: você pode fazer isso:
fonte
Desde o Git 2.7.0, o Git leva em consideração as exceções. Das notas oficiais de lançamento:
https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.7.0.txt
fonte