.gitignore NuGet exclure les packages / include packages / repositories.config

89

J'essaie de créer un .gitignore pour un projet Visual Studio qui utilise NuGet. Il contient actuellement:

\packages/*
!packages/repositories.config

Cela n'ignore rien dans le dossier. Tout est mis en scène sur un ajout. J'ai également essayé:

packages/
!packages/repositories.config

Cela ignore tout dans le dossier packages et n'inclut pas les packages / repositories.config.

Qu'est-ce que je fais mal?

Dipesh
la source

Réponses:

114
/packages/
!packages/repositories.config

Vous pouvez également ajouter un .gitignoredans le dossier packages:

*
!repositories.config
!.gitignore
manojlds
la source
12
Ce serait dommage si le .gitignores'ignorait. +1
Thomas
2
Le premier bloc ne fonctionne pas pour moi (git version 1.8.4.msysgit.0). Je pense que la première ligne devrait simplement être packagessans l'étoile.
Grant Birchmeier
1
J'ai trouvé que Visual Studio affichait toujours le dossier packages. J'ai dû retirer ms-persist.xmldu .gitdossier pour que le .gitignorefichier soit respecté. Voir ericnelson.wordpress.com/2014/06/21/… pour plus d'informations à ce sujet.
rudivonstaden
Je ne sais pas quelle version avez-vous essayé, mais cela /packages/n'a pas fonctionné pour moi. Au lieu de cela, j'ai trouvé cette réponse très utile. Bref packages/*fait l'affaire. Git version 2.6.1
Stelios Adamantidis
36

J'ai fait face au même problème.

Aucune des solutions ci-dessus n'a fonctionné pour moi. Et je pense que c'est une mauvaise solution pour conserver plusieurs fichiers .ignore.

Voilà comment je l'ai résolu.

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

La combinaison de deux astérisques correspondra à n'importe quelle chaîne de dossiers. Je pensais que laisser de côté les astérisques aurait le même effet, mais apparemment, je (nous) avions tort, car cela ne semble pas fonctionner.

Le modèle officiel .gitignore pour Visual Studio recommande les solutions suivantes:

# 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

EDIT: Vous pouvez utiliser https://www.gitignore.io pour générer un fichier .ignore pour votre projet préféré :-)

Ali Reza Dehdar
la source
2
C'est la seule variante qui a fonctionné pour moi car j'avais plusieurs projets dans le référentiel avec un dossier packages dans chacun. Merci.
Michael Logutov
1
Celui qui fonctionne très bien est le modèle officiel recommandé pour Visual Studio + décommentez la dernière ligne.
vezenkov
1
C'est en fait un peu risqué. Il ignore tout dossier nommé «packages», pas seulement celui au niveau de la solution. J'ai découvert trop tard que certaines de mes classes modèles n'avaient jamais fait partie du référentiel.
Riche le
2
Il a maintenant été mis à jour: # NuGet Packages .nupkg # Le dossier packages peut être ignoré à cause de Package Restore ** / packages / # sauf build /, qui est utilisé comme cible MSBuild. ! ** / packages / build / # Décommentez si nécessaire, mais généralement, il sera régénéré si nécessaire #! ** / packages / repositories.config # Les fichiers project.json de NuGet v3 produisent des fichiers plus ignorables * .nuget.props * .nuget. cibles
Daniel Ryan
sauf que !**/packages/build/cela ne fonctionne pas pour moi, avec la solution donnée ... les dossiers de construction ne sont pas
validés
12

Cela fonctionne pour moi.

#NuGet
packages
!packages/repositories.config

(Identique à la réponse de @ manojlds, sauf que l'étoile a été supprimée de la première ligne. Cela n'a pas fonctionné pour moi.)

Grant Birchmeier
la source
8

J'ai trouvé que ce modèle simple fonctionne.

/packages/*/

Il doit ignorer tous les répertoires du répertoire racine des packages, mais y inclure tous les fichiers. Je ne sais pas quels autres fichiers que repositories.config peuvent y apparaître ou s'ils doivent être inclus dans le référentiel.

Voir aussi Syntaxe .gitignore: bin vs bin / vs bin / * vs bin / **

ygoe
la source
0

Pour moi, cela a fonctionné:

**/packages/**

Sam
la source