Git - Как удалить шаблоны исключений из глобального .gitignore для одного проекта - PullRequest
2 голосов
/ 27 марта 2019

Допустим, у меня есть ".foo" в моем глобальном .gitignore, и это прекрасно работает для всех моих текущих проектов (и скажем, что их много, поэтому я хочу сохранить это в моем глобальном файле игнорирования ).

Теперь я начинаю новый проект, который использует .foo файлы везде.

Как я могу "отменить" исключение .foo файлов, определенных в моем глобальном игнорировании только для этого конкретного проекта?

Это означает, что я могу просто git add . при работе с новым проектом и заставить его взять все файлы .foo, но если я запускаю git add . в любом другом проекте, тогда файлы .foo игнорируются.

Ответы [ 3 ]

5 голосов
/ 27 марта 2019

Вы можете просто проигнорировать шаблон, добавив ведущий !, например:

# Don't ignore .foo file
!.foo

Если вы поместите это в локальный .gitignore, он переопределит настройки, сделанные в глобальном .gitignore.

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

2 голосов
/ 27 марта 2019

Каждый репозиторий также имеет локальный .gitignore, который вы можете изменить.

Принятый ответ говорит вам, где искать:

Как настроить git на локальное игнорирование некоторых файлов?

Чтобы проигнорировать, просто добавьте его в локальный файл .gitignore с ведущей!

1 голос
/ 27 марта 2019

То, что вы ищете, это отрицание.См. https://git -scm.com / docs / gitignore # _pattern_format

Необязательный префикс "!"который отрицает образец;любой соответствующий файл, исключенный предыдущим шаблоном, снова будет включен.

Для вашего случая просто добавьте его в .gitignore для проекта:

!.foo

Проверьте этот вопросдля более исчерпывающего объяснения: Сделайте .gitignore игнорировать все, кроме нескольких файлов


Обратите внимание на это важное предостережение в документах:

Это неможно повторно включить файл, если родительский каталог этого файла исключен.

Так что, если вы пытаетесь включить только определенные файлы в исключенный каталог, вам придется изменить положение вещей, чтобы включитькаталог, но исключите все файлы внутри него, кроме тех, которые вам нужны:

!excludedir
excludedir/*
!excludedir/*.foo
...