Подтвердить что ты не робот

Можно ли игнорировать правила .gitignore в подкаталоге?

Я хочу игнорировать все правила .gitignore в подкаталоге, за исключением .gitignore правил в корневом каталоге.

например)  У меня уже есть файл .gitignore в структуре каталогов /a.

И также имеет .gitignore файл в /a/b. Предположим, что /a имеют файлы a.txt b.txt.

/a/b имеет .config файл. .gitignore определяет .config в /a/b.

.config файл будет игнорироваться .gitignore в /a/b.

Но я действительно хочу отслеживать файл .config, игнорируя правила .gitignore в подкаталоге.

Возможно ли это?

Заранее спасибо

4b9b3361

Ответ 1

Ваш вопрос не слишком ясен, но если есть какие-то подкаталоги, где вам нужны разные правила gitignore, вы можете просто создать новый .gitignore в этом каталоге.

Скажите, что у вас есть:

project/.gitignore
project/stuff/.gitignore

.gitignore в файле/будет переопределять .gitignore в корневом каталоге.

git help gitignore или man gitignore содержит немного больше информации о том, что возможно.

Ответ 2

Предположим, вы хотите включить node_modules в свой репозиторий, но какой-то модуль по строке имеет .gitignore. Вы можете отменить правила, добавив в свой корневой файл .gitignore следующее:

# Make sure to include everything in node_modules.
!node_modules/**

Ответ 3

Ключом к проблеме здесь является то, что родительский каталог исключен. От $ man gitignore:

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

Вот как я начал работать. Дано:

/a/...
/b/foo
/c/...

/.gitignore:

/*
!/b

Затем /b/foo будет отображаться как включенные файлы, в то время как все в /a и /c будет исключено. Компромисс заключается в том, что вам нужно добавить отрицание для всех родителей любого каталога, в который вы хотите включить файлы.

Ответ 4

Насколько я знаю, нет способа сделать это. Поскольку локальный .gitignore будет перезаписывать корневой ginignore Мое обходное решение добавляется вручную.

git add --force [ your file and folder]