.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?

Respostas:


114
/packages/
!packages/repositories.config

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

*
!repositories.config
!.gitignore

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 :-)


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


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 / **


0

Para mim só funcionou:

**/packages/**

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.