.gitignore NuGet esclude pacchetti / include pacchetti / repository.config


89

Sto cercando di creare un .gitignore per un progetto di Visual Studio che usa NuGet. Attualmente contiene:

\packages/*
!packages/repositories.config

Questo non ignora nulla nella cartella. Tutto viene messo in scena su un add. Ho anche provato:

packages/
!packages/repositories.config

Questo ignora tutto nella cartella dei pacchetti e non include packages / repository.config.

Che cosa sto facendo di sbagliato?

Risposte:


114
/packages/
!packages/repositories.config

Puoi anche aggiungere un .gitignorenella cartella dei pacchetti:

*
!repositories.config
!.gitignore

12
E sarebbe un peccato se la .gitignorestessa ignorato. +1
Thomas

2
Il primo blocco non funziona per me (versione git 1.8.4.msysgit.0). Penso che la prima riga dovrebbe essere solo packagessenza la stella.
Grant Birchmeier

1
Ho scoperto che Visual Studio visualizzava ancora la cartella dei pacchetti. Ho dovuto rimuovere ms-persist.xmldalla .gitcartella perché il .gitignorefile fosse rispettato. Vedi ericnelson.wordpress.com/2014/06/21/… per ulteriori informazioni su questo.
Rudivonstaden

Non so su quale versione l'hai provato, ma /packages/non ha funzionato per me. Invece ho trovato questa risposta molto utile. In breve ha packages/*fatto il trucco. Git versione 2.6.1
Stelios Adamantidis

36

Ho affrontato lo stesso problema.

Nessuna delle soluzioni di cui sopra ha funzionato per me. E penso che sia una soluzione scadente mantenere più file .ignore.

Ecco come l'ho risolto.

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

La combinazione di due asterischi corrisponderà a qualsiasi stringa di cartelle. Pensavo che omettere gli asterischi avrebbe lo stesso effetto, ma a quanto pare io (noi) ci sbagliavamo, poiché non sembra funzionare.

Il modello .gitignore ufficiale per Visual Studio consiglia le seguenti soluzioni:

# 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: puoi utilizzare https://www.gitignore.io per generare il file .ignore per il tuo progetto preferito :-)


2
Questa è l'unica variante che ha funzionato per me poiché avevo più progetti nel repository con la cartella dei pacchetti in ciascuno. Grazie.
Michael Logutov

1
Quello che funziona alla grande è il modello ufficiale consigliato per Visual Studio + rimuovere il commento dall'ultima riga.
vezenkov

1
Questo in realtà è un po 'rischioso. Ignora qualsiasi cartella denominata "packages", non solo quella a livello di soluzione. Ho scoperto troppo tardi che alcune delle mie classi modello non erano mai state parte del repository.
Rich

2
Ora è stato aggiornato: # NuGet Packages .nupkg # La cartella packages può essere ignorata a causa di Package Restore ** / packages / # eccetto build /, che viene usata come destinazione MSBuild. ! ** / packages / build / # Rimuovere il commento se necessario, tuttavia in genere verrà rigenerato quando necessario #! ** / packages / repositories.config # I file project.json di NuGet v3 producono file più ignorabili * .nuget.props * .nuget. obiettivi
Daniel Ryan

tranne che !**/packages/build/per me non funziona, con la soluzione fornita ... le cartelle di compilazione non vengono impegnate
JobaDiniz


8

Ho trovato che questo semplice schema funziona.

/packages/*/

Dovrebbe ignorare tutte le directory nella directory principale dei pacchetti, ma includere tutti i file lì. Non sono sicuro di quali altri file oltre a repository.config potrebbero apparire lì o se debbano essere inclusi nel repository.

Vedi anche .gitignore Sintassi: bin vs bin / vs. bin / * vs. bin / **


0

Per me solo questo ha funzionato:

**/packages/**

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.