.gitignore NuGet виключає пакунки / включає пакунки / сховища.config


89

Я намагаюся створити .gitignore для проекту Visual Studio, який використовує NuGet. На даний момент він містить:

\packages/*
!packages/repositories.config

Це не ігнорує нічого в папці. Все стає інсценізовано на додаток. Я також пробував:

packages/
!packages/repositories.config

Це ігнорує все, що знаходиться в папці пакети, і не включає пакети / repositories.config.

Що я роблю не так?

Відповіді:


114
/packages/
!packages/repositories.config

Ви також можете додати a .gitignoreв папку пакети:

*
!repositories.config
!.gitignore

12
Було б соромно, якби .gitignoreігнорували самого себе. +1
Томас

2
Перший блок у мене не працює (git версія 1.8.4.msysgit.0). Я думаю, що перший рядок повинен бути просто packagesбез зірки.
Grant Birchmeier

1
Я виявив, що Visual Studio все ще відображав папку пакети. Мені довелося видалити ms-persist.xmlз .gitпапки, щоб .gitignoreфайл поважався. Докладніше про це див. У ericnelson.wordpress.com/2014/06/21/… .
rudivonstaden

Не знаю, на якій версії ви це приміряли, але /packages/у мене не вийшло. Натомість я знайшов цю відповідь дуже корисною. Словом, packages/*зробив фокус. Git версія 2.6.1
Stelios Adamantidis

36

Я зіткнувся з тим же питанням.

Жодне з наведених вище рішень не спрацювало для мене. І я думаю, що це погане рішення для підтримки декількох файлів .ignore.

Ось як я це вирішив.

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

Поєднання двох зірочок відповідатиме будь-якому рядку папок. Я думав, що залишення зірочок матиме той самий ефект, але, мабуть, я (ми) помилявся, оскільки це, здається, не працює.

Офіційний шаблон .gitignore для Visual Studio рекомендує такі рішення:

# 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

РЕДАГУВАТИ: Ви можете використовувати https://www.gitignore.io, щоб створити файл .ignore для вашого улюбленого проекту :-)


2
Це єдиний варіант, який працював у мене, оскільки у мене було кілька проектів у сховищі з папкою пакети в кожному. Дякую.
Michael Logutov

1
Той, який чудово працює, - це рекомендований офіційний шаблон для Visual Studio +, коментуючи останній рядок.
Везенков

1
Це насправді трохи ризиковано. Він ігнорує будь-яку папку з назвою "пакети", а не лише папку на рівні рішення. Я пізно дізнався, що деякі з моїх класів моделей ніколи не були частиною сховища.
Багатий

2
Наразі оновлено: # NuGet Packages .nupkg # Папку пакетів можна ігнорувати через відновлення пакета ** / пакети / # за винятком збірки /, яка використовується як ціль MSBuild. ! ** / Packages / build / # Розкоментуйте, якщо це необхідно, однак, як правило, він буде регенерований за необхідності #! ** / Packages / repositories.config # NuGet v3's project.json файли створюють більше файлів, що не підлягають доступу * .nuget.props * .nuget. цілі
Даніель Райан

за винятком того, !**/packages/build/що у мене не працює, з даним рішенням ... папки збірки не
фіксуються

12

Це працює для мене.

#NuGet
packages
!packages/repositories.config

(Те саме, що відповідь @ manojlds, за винятком того, що у першому рядку видалено зірочку. Це не спрацювало для мене.)


8

Я виявив, що цей простий шаблон працює.

/packages/*/

Він повинен ігнорувати всі каталоги у каталозі кореневих пакетів, але включати всі файли туди. Не впевнений, що інші файли, крім repositories.config, можуть там знаходитися, чи їх слід включати до сховища.

Див. Також синтаксис .gitignore: bin vs bin / vs bin / * vs bin / **


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.