.gitignore NuGet wyklucza pakiety / dołącza pakiety / repozytoria.config

89

Próbuję utworzyć .gitignore dla projektu programu Visual Studio, który używa NuGet. Obecnie zawiera:

\packages/*
!packages/repositories.config

Nie ignoruje to niczego w folderze. Wszystko jest inscenizowane na dodatek. Próbowałem też:

packages/
!packages/repositories.config

To ignoruje wszystko w folderze pakietów i nie obejmuje pliku packages / repositories.config.

Co ja robię źle?

Dipesh
źródło

Odpowiedzi:

114
/packages/
!packages/repositories.config

Możesz również dodać .gitignorew folderze pakietów:

*
!repositories.config
!.gitignore
manojlds
źródło
12
Szkoda by było, gdyby się .gitignoreignorował. +1
Thomas,
2
Pierwszy blok nie działa dla mnie (wersja git 1.8.4.msysgit.0). Myślę, że pierwsza linia powinna być po prostu packagesbez gwiazdy.
Grant Birchmeier
1
Zauważyłem, że program Visual Studio nadal wyświetla folder pakietów. Musiałem usunąć ms-persist.xmlz .gitfolderu, aby .gitignoreplik był szanowany. Więcej informacji na ten temat można znaleźć na stronie ericnelson.wordpress.com/2014/06/21/ ...
rudivonstaden
Nie wiem, w której wersji to wypróbowałeś, ale /packages/dla mnie nie działa. Zamiast tego uznałem tę odpowiedź za bardzo pomocną. Krótko mówiąc, packages/*załatwił sprawę. Git w wersji 2.6.1
Stelios Adamantidis
36

Miałem ten sam problem.

Żadne z powyższych rozwiązań nie zadziałało. Myślę, że utrzymywanie wielu plików .ignore to kiepskie rozwiązanie.

Tak to rozwiązałem.

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

Połączenie dwóch gwiazdek spowoduje dopasowanie dowolnego ciągu folderów. Myślałem, że pominięcie gwiazdek przyniosłoby ten sam efekt, ale najwyraźniej myliliśmy się, ponieważ wydaje się, że to nie działa.

Oficjalny szablon .gitignore dla programu Visual Studio zaleca następujące rozwiązania:

# 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

EDYCJA: Możesz użyć https://www.gitignore.io, aby wygenerować plik .ignore dla swojego ulubionego projektu :-)

Ali Reza Dehdar
źródło
2
Jest to jedyny wariant, który działał dla mnie, ponieważ miałem wiele projektów w repozytorium z folderem pakietów w każdym. Dzięki.
Michael Logutov
1
Ten, który działa świetnie, to zalecany oficjalny szablon programu Visual Studio + odkomentuj ostatni wiersz.
vezenkov
1
To właściwie trochę ryzykowne. Ignoruje każdy folder o nazwie „pakiety”, a nie tylko ten na poziomie rozwiązania. Za późno dowiedziałem się, że niektóre z moich klas modeli nigdy nie były częścią repozytorium.
Rich
2
Został teraz zaktualizowany: # Pakiety NuGet .nupkg # Folder pakietów można zignorować z powodu przywracania pakietu ** / packages / # z wyjątkiem build /, który jest używany jako cel MSBuild. ! ** / packages / build / # Odkomentuj, jeśli to konieczne, jednak generalnie będzie to ponownie generowane w razie potrzeby #! ** / packages / repositories.config # Pliki project.json programu NuGet v3 tworzą bardziej ignorowalne pliki * .nuget.props * .nuget. cele
Daniel Ryan
ale !**/packages/build/to nie działa dla mnie, przy podanym rozwiązaniu ... foldery kompilacji nie są
zatwierdzone
12

To działa dla mnie.

#NuGet
packages
!packages/repositories.config

(To samo, co odpowiedź @ manojlds, z tym wyjątkiem, że usunięto gwiazdkę w pierwszym wierszu. To nie zadziałało dla mnie).

Grant Birchmeier
źródło
8

Odkryłem, że ten prosty wzór działa.

/packages/*/

Powinien zignorować wszystkie katalogi w katalogu głównym z pakietami, ale zawierać tam wszystkie pliki. Nie jestem pewien, jakie inne pliki niż repositories.config mogą się tam pojawić lub czy powinny zostać uwzględnione w repozytorium.

Zobacz także .gitignore Składnia: bin vs bin / vs bin / * vs bin / **

ygoe
źródło
0

U mnie tylko to zadziałało:

**/packages/**

Sam
źródło