Для тех, кто ищет чистящее средство , попробуйте следующее.
Как уже упоминалось в комментариях этого ответа, вы должны использовать этот метод рекурсивно.
В этом примере у вас есть настройка веб-сайта на ./
, где находится папка .git
и файл .gitignore
, а также установка WordPress в ./wordpress
. Чтобы правильно игнорировать все содержимое каталога ./wordpress
, кроме самого каталога темы (wordpress/wp-content/themes/my-theme
), вам придется рекурсивно игнорировать и разрешать каждый каталог вплоть до каталога, который вы хотите разрешить:
wordpress/*
wordpress/wp-content/*
wordpress/wp-content/themes/*
!wordpress/wp-content
!wordpress/wp-content/themes
!wordpress/wp-content/themes/my-theme
Причина игнорирования с подстановочным знаком и разрешения (или игнорирования «отдельно от») самого каталога позволяет Git сначала заглянуть внутрь каталога, прежде чем игнорировать все внутри. Затем мы говорим Git игнорировать все, кроме указанного нами каталога. Вот тот же синтаксис, но в порядке того, как Git смотрит на него:
wordpress/* # Ignore everything inside here
!wordpress/wp-content # Apart from this directory
wordpress/wp-content/* # Ignore everything inside here
!wordpress/wp-content/themes # Apart from this directory
wordpress/wp-content/themes/* # Ignore everything inside here
!wordpress/wp-content/themes/my-theme # Apart from this directory
Надеюсь, это поможет кому-то лучше понять необходимость рекурсивного метода.