.gitignore NuGet исключить пакеты/включить пакеты/repositories.config

Я пытаюсь создать .gitignore для проекта Visual Studio, который использует NuGet. В настоящее время он содержит:

\packages/*
!packages/repositories.config

Это не игнорирует ничего в папке. Все делается поэтапно. Я также пробовал:

packages/
!packages/repositories.config

Это игнорирует все в папке пакетов и не включает пакеты /repositories.config.

Что я делаю неправильно?

Ответ 1

/packages/
!packages/repositories.config

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

*
!repositories.config
!.gitignore

Ответ 2

Я столкнулся с той же проблемой.

Ни один из вышеперечисленных решений не работал у меня. И я думаю, что это плохое решение для поддержки нескольких файлов .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

EDIT: вы можете использовать https://www.gitignore.io для создания файла .ignore для вашего любимого проекта: -)

Ответ 3

Это работает для меня.

#NuGet
packages
!packages/repositories.config

(То же, что @manojlds отвечает, кроме удаленной звезды в первой строке. Это не сработало для меня.)

Ответ 4

Я нашел, что этот простой шаблон работает.

/packages/*/

Он должен игнорировать все каталоги в каталоге корневых пакетов, но включать туда все файлы. Не знаете, какие другие файлы, кроме repositories.config, могут появиться там или они должны быть включены в репозиторий.

См. также .gitignore Синтаксис: bin vs bin/vs. bin/* vs. bin/**