GitIgnore - игнорирование bin /, но включая bin / *. Refresh - PullRequest
11 голосов
/ 18 ноября 2011

Я пытаюсь игнорировать папку bin веб-проекта, но включаю файлы .refresh, которые находятся в этой папке bin.

Вот что у меня есть в моем .gitignore:

[Bb]in/
#Allow .refresh files for web sites
![Bb]in/*.refresh

Но это не работает.Что я делаю неправильно?Я также пытался:

!*.refresh

С теми же результатами.

Обновление:

Вот структура файла, если это помогает диагностировать это:

\rootfolder
    .gitignore
    \project1
         \bin
              file1.dll
              file1.dll.refresh

Вы можете увидеть, где находится наш файл gitignore.Мы не хотим .dll, но мы хотим .refresh файл.

Ответы [ 6 ]

9 голосов
/ 12 августа 2015

Этот способ не работал для меня:

[Bb]in/*
![Bb]in/*.refresh

Я использовал синтаксис ниже для файла .gitignore и работал нормально.

Попробуйте:

**/[Bb]in/*
!**/[Bb]in/*.refresh
7 голосов
/ 18 ноября 2011

Попробуйте сделать ниже:

[Bb]in/*
![Bb]in/*.refresh

это потому, что когда вы просто делаете bin или bin /, он вообще не спускается в папку для поиска файла. Вам придется явно сказать, перейти в папку, но игнорировать все, а затем сказать, не игнорировать * .refresh.

Редактировать структуру ОП:

Тогда вам придется либо

1) Включите project1 в путь к вашему .gitignore :

project1/bin/*
project1/bin/*.refresh

или

2) Добавить .gitignore внутри проекта1 (я рекомендую это) с предыдущим содержимым.

4 голосов
/ 24 апреля 2013

Я знаю, что это старый пост, но у меня все еще была эта проблема, и, используя MsysGit 1.8.0, я не смог использовать принятый ответ @ manojlds.

Похоже, единственными шаблонами, которые исключают все папки bin на любой глубине, являются [Bb]in и [Bb]in/. Согласно справочной странице gitignore , наиболее правильной является та, которая содержит косую черту, поскольку она будет соответствовать только каталогам, а не файлам с именем "bin". Как только я пытаюсь добавить дополнительные уровни к шаблону, такие как [Bb]in/*, он перестает совпадать на любой глубине и становится относительно местоположения файла .gitignore, как показано на странице man.

Теперь, предположив, что у меня есть запись [Bb]in/ в моем глобальном файле .gitignore, я нашел лучший способ игнорировать определенный шаблон файлов (например, файлы .refresh) в определенной папке bin - создать еще один .gitignore Подпишите один каталог над папкой bin (т. е. каталогом проекта) и поместите в нее следующие записи:

![Bb]in/
[Bb]in/*
![Bb]in/*.refresh

Папки bin проекта нашего веб-сайта никогда не содержат вложенных папок, таких как Debug или Release, но я протестировал, и при желании все равно игнорируются подпапки в папке bin.

Если я использую только вторую и третью записи, как показалось в принятом ответе, это не сработает. Интуитивно понятное объяснение состоит в том, что первая запись удаляет эту конкретную папку bin из глобального глобуса, поэтому ее содержимое будет включено, затем вторая запись работает как нужно, поскольку в этом случае она относится к файлу .gitignore, а третья запись удаляет желаемые узоры из шара, созданного второй записью.

3 голосов
/ 18 ноября 2011

Для меня работает следующее:

[Bb]in/*
![Bb]in/*.refresh

Обратите внимание, что первая строка получила завершающую звездочку, чтобы соответствовать всем содержимому каталога bin, а не самому каталогу.Таким образом, вы можете добавить исключение из глобуса для * .refresh.

2 голосов
/ 15 февраля 2018

С Roslyn («Включить новейшие функции C # и VB» для проекта веб-сайта) теперь внутри «bin» будет подкаталог, в котором будут находиться файлы .refresh, которые вам понадобятся. Это становится головной болью из-за поведения git по умолчанию, когда после исключения папки любые исключения внутри нее никогда не будут найдены (/ directory / * vs /directory/**/.)

Итак, нам нужно, чтобы bin был следующим:

**/[Bb]in/**/*.*

в противном случае весь каталог roslyn будет игнорироваться, а затем

!**/*.refresh

1 голос
/ 13 июня 2015

Другим решением может быть принудительное включение файлов .refresh из командной строки.

git add *.dll.refresh --force

- принудительно
Разрешить добавление игнорируемых файлов.

Чем вы можете просто исключить все в папке bin в вашем файле .gitignore.Если вы добавляете новый пакет, вам необходимо снова включить новый файл .refresh.

...