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

89

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

\packages/*
!packages/repositories.config

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

packages/
!packages/repositories.config

Это игнорирует все, что находится в папке пакетов, и не включает файл packages / repositories.config.

Что я делаю не так?

Дипеш
источник

Ответы:

114
/packages/
!packages/repositories.config

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

*
!repositories.config
!.gitignore
Manojlds
источник
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
Стелиос Адамантидис
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
Это единственный вариант, который у меня сработал, так как у меня было несколько проектов в репозитории с папкой пакетов в каждом. Спасибо.
Михаил Логутов
1
Отлично работает рекомендуемый официальный шаблон для Visual Studio + раскомментируйте последнюю строку.
vezenkov
1
На самом деле это немного рискованно. Он игнорирует любую папку с именем «пакеты», а не только папку на уровне решения. Я слишком поздно узнал, что некоторые из моих классов моделей никогда не входили в репозиторий.
Rich
2
Он был обновлен: # NuGet Packages .nupkg # Папка пакетов может быть проигнорирована из-за восстановления пакета ** / packages / # за исключением build /, который используется в качестве цели MSBuild. ! ** / packages / build / # При необходимости раскомментируйте, однако обычно он будет регенерирован при необходимости #! ** / packages / repositories.config # Файлы Project.json NuGet v3 создают больше игнорируемых файлов * .nuget.props * .nuget. цели
Daniel Ryan
за исключением того, что !**/packages/build/это не работает для меня с данным решением ... папки сборки не
фиксируются
12

У меня это работает.

#NuGet
packages
!packages/repositories.config

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

Грант Бирчмайер
источник
8

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

/packages/*/

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

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

ygoe
источник
0

Для меня сработало только это:

**/packages/**

Сэм
источник