.gitignore Не работает исключение (отмена) игнорирования (со восклицательным знаком !) -- причина. Как исправить
Primary tabs
Forums:
Ранее мы уже говорили об одной ситуации, когда .gitignore "не работает", в этой же заметке рассмотрим ситуацию связанную уже непосредственно с правилами написанными в этом файле.
Сразу скажем, что проверять работу правил можно такой командой.
Главная мысль
Если родительская папка (а не её содержимое) данного элемента была проигнорирована ранее в каком-то правиле, то уже не получается отменить данном правило для её потомка.
It is not possible to re-include a file if a parent directory of that file is excluded.
-- это было актуально до версии 2.8 в будущем, может быть исправят.
Пример
Пусть у нас есть директория, в которой мы хотим всё игнорировать, кроме самой этой директории -- в этом случае нам достаточно закинуть в неё такой .гитигнор:
# игнорироровать папку и содержимое * # Но не сам наш файл: !.gitignore
Но предположим, что нам захотелось не игнорировать ещё одну подпапку (в этой) скажем её название images -- то есть нам тоже хочется сделать, чтобы она сохранилась по контролем, а содержимое не нужно. Тогда если мы напишем так:
# игнорироровать папку и содержимое * # Но не сам наш файл: !.gitignore !images/.gitkeep
(используем .gitkeep) -- то исключение
!images/.gitkeep уже не сработает так как предыдущее правило звездочки * уже отправила родительскую для гиткипа папку в игнор (см. "Главную мысль" выше).
Как правильно сохранить поддиректорию без содержимого в .gitignore если нужно игнорировать родителя
А потому правильно сохранить подпапку можно так (содержимое игнора родительской папки):
# игнорироровать содержимое папки в который лежит этот файл /* # Но не сам наш файл и не: !.gitignore !foiv_images/ /foiv_images/* !foiv_images/.gitkeep
Разберем эти правила подробнее:
- /* - игнорирует всё в данной папке (в которой лежит .gitignore), но не саму её, что очень важно -- если просто поставить звездочку, то мы подпадём под правило, что если родитель проинорирован, то вернуть потомка уже нельзя
- !.gitignore -- отмена игнорирования самого файла
- !images/ -- отменяем игнор папки (чтобы гиткип внутри её не подпал под правило)
- /images/* -- но игнорим все содержимое
- !foiv_images/.gitkeep -- но не игнорим гиткип
- Log in to post comments
- 4872 reads