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

89

Estoy intentando crear un .gitignore para un proyecto de Visual Studio que usa NuGet. Actualmente contiene:

\packages/*
!packages/repositories.config

Esto no ignora nada en la carpeta. Todo se organiza en un anuncio. También he probado:

packages/
!packages/repositories.config

Esto ignora todo en la carpeta de paquetes y no incluye los paquetes / repositories.config.

¿Qué estoy haciendo mal?

Dipesh
fuente

Respuestas:

114
/packages/
!packages/repositories.config

También puede agregar un .gitignoreen la carpeta de paquetes:

*
!repositories.config
!.gitignore
manojlds
fuente
12
Que sería una pena si la .gitignoremisma ignorados. +1
Thomas
2
El primer bloque no me funciona (git versión 1.8.4.msysgit.0). Creo que la primera línea debería ser packagessin la estrella.
Grant Birchmeier
1
Descubrí que Visual Studio todavía mostraba la carpeta de paquetes. Tuve que eliminar ms-persist.xmlde la .gitcarpeta para .gitignoreque se respetara el archivo. Consulte ericnelson.wordpress.com/2014/06/21/… para obtener más información sobre esto.
rudivonstaden
No sé en qué versión has probado esto, pero /packages/no funcionó para mí. En cambio, encontré esta respuesta muy útil. En resumen packages/*hizo el truco. Versión de Git 2.6.1
Stelios Adamantidis
36

Me enfrenté al mismo problema.

Ninguna de las soluciones anteriores funcionó para mí. Y creo que es una mala solución mantener varios archivos .ignore.

Así es como lo resolví.

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

La combinación de dos asteriscos coincidirá con cualquier cadena de carpetas. Pensé que omitir los asteriscos tendría el mismo efecto, pero aparentemente yo (nosotros) estábamos equivocados, ya que no parece funcionar.

La plantilla .gitignore oficial para Visual Studio recomienda las siguientes soluciones:

# 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: Puede usar https://www.gitignore.io para generar un archivo .ignore para su proyecto favorito :-)

Ali Reza Dehdar
fuente
2
Esta es la única variante que funcionó para mí, ya que tenía varios proyectos en el repositorio con carpetas de paquetes en cada uno. Gracias.
Michael Logutov
1
La que funciona muy bien es la plantilla oficial recomendada para Visual Studio + descomente la última línea.
vezenkov
1
En realidad, esto es un poco arriesgado. Ignora cualquier carpeta denominada "paquetes", no solo la del nivel de solución. Descubrí demasiado tarde que algunas de mis clases modelo nunca habían sido parte del repositorio.
Rich
2
Ahora se ha actualizado: # NuGet Packages .nupkg # La carpeta de paquetes se puede ignorar debido a Restauración de paquetes ** / packages / # excepto build /, que se usa como destino de MSBuild. ! ** / packages / build / # Descomente si es necesario, sin embargo, generalmente se regenerará cuando sea necesario #! ** / packages / repositories.config # Los archivos project.json de NuGet v3 producen más archivos ignorables * .nuget.props * .nuget. objetivos
Daniel Ryan
excepto que !**/packages/build/no funciona para mí, con la solución dada ... las carpetas de compilación no están comprometidas
JobaDiniz
12

Esto funciona para mi.

#NuGet
packages
!packages/repositories.config

(Igual que la respuesta de @ manojlds, excepto que eliminó la estrella en la primera línea. Eso no funcionó para mí).

Grant Birchmeier
fuente
8

Encontré que este patrón simple funciona.

/packages/*/

Debería ignorar todos los directorios del directorio de paquetes raíz, pero incluir todos los archivos allí. No estoy seguro de qué otros archivos además de repositories.config podrían aparecer allí o si deberían incluirse en el repositorio.

Consulte también .gitignore Sintaxis: bin vs bin / vs bin / * vs bin / **

ygoe
fuente
0

Para mí solo esto funcionó:

**/packages/**

Sam
fuente