.gitignore NuGet excluir pacotes / incluir pacotes / repositories.config

89

Estou tentando criar um .gitignore para um projeto do Visual Studio que usa NuGet. Atualmente contém:

\packages/*
!packages/repositories.config

Isso não ignora nada na pasta. Tudo é encenado em um add. Eu também tentei:

packages/
!packages/repositories.config

Isso ignora tudo na pasta de pacotes e não inclui o packages / repositories.config.

O que estou fazendo de errado?

Dipesh
fonte

Respostas:

114
/packages/
!packages/repositories.config

Você também pode adicionar um .gitignorena pasta de pacotes:

*
!repositories.config
!.gitignore
manojlds
fonte
12
Ele iria ser uma vergonha se a .gitignoresi ignorado. +1
Thomas,
2
O primeiro bloco não funciona para mim (git versão 1.8.4.msysgit.0). Acho que a primeira linha deveria ser apenas packagessem a estrela.
Grant Birchmeier
1
Descobri que o Visual Studio ainda exibia a pasta de pacotes. Tive que retirar ms-persist.xmlda .gitpasta para que o .gitignorearquivo fosse respeitado. Consulte ericnelson.wordpress.com/2014/06/21/… para mais informações.
rudivonstaden
Não sei em qual versão você tentou isso, mas /packages/não funcionou para mim. Em vez disso, achei essa resposta muito útil. Em suma, packages/*fez o truque. Git versão 2.6.1
Stelios Adamantidis
36

Eu enfrentei o mesmo problema.

Nenhuma das soluções acima funcionou para mim. E eu acho que é uma solução ruim para manter vários arquivos .ignore.

Foi assim que resolvi.

**/packages/*
!**/packages/repositories.config

A combinação de dois asteriscos corresponderá a qualquer sequência de pastas. Achei que omitir os asteriscos teria o mesmo efeito, mas aparentemente eu (nós) estávamos errados, pois não parece funcionar.

O modelo oficial .gitignore para Visual Studio recomenda as seguintes soluções:

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config

EDITAR: Você pode usar https://www.gitignore.io para gerar o arquivo .ignore para o seu projeto favorito :-)

Ali Reza Dehdar
fonte
2
Esta é a única variante que funcionou para mim, já que eu tinha vários projetos no repositório com pasta de pacotes em cada um. Obrigado.
Michael Logutov
1
O que funciona muito bem é o modelo oficial recomendado para Visual Studio + descomente a última linha.
vezenkov
1
Na verdade, isso é um pouco arriscado. Ele ignora qualquer pasta chamada "pacotes", não apenas aquela no nível da solução. Eu descobri tarde demais que algumas de minhas classes de modelo nunca fizeram parte do repositório.
Rica
2
Agora foi atualizado: # NuGet Packages .nupkg # A pasta de pacotes pode ser ignorada por causa de Package Restore ** / packages / # exceto build /, que é usado como um destino MSBuild. ! ** / packages / build / # Remova o comentário se necessário, entretanto geralmente ele será regenerado quando necessário #! ** / packages / repositories.config # Os arquivos project.json do NuGet v3 produzem arquivos mais ignoráveis ​​* .nuget.props * .nuget. alvos
Daniel Ryan
exceto que !**/packages/build/não funciona para mim, com a solução dada ... pastas de construção não são confirmadas
JobaDiniz
12

Isso funciona para mim.

#NuGet
packages
!packages/repositories.config

(O mesmo que a resposta de @manojlds, exceto pela remoção da estrela na primeira linha. Isso não funcionou para mim.)

Grant Birchmeier
fonte
8

Eu descobri que esse padrão simples funciona.

/packages/*/

Ele deve ignorar todos os diretórios no diretório de pacotes raiz, mas incluir todos os arquivos lá. Não tenho certeza de quais outros arquivos além de repositories.config podem aparecer lá ou se eles devem ser incluídos no repositório.

Consulte também .gitignore Sintaxe: bin vs bin / vs. bin / * vs. bin / **

ygoe
fonte
0

Para mim só funcionou:

**/packages/**

Sam
fonte