исключение каталога gitignore не работает
у меня есть следующая структура папок:
public
media
catalog
product
category
private
tmp
var
test
Я хочу gitignore все в media
каталог кроме catalog/category
и private
мой gitignore я пытаюсь:
public/media/*
!public/media/catalog/category/
!public/media/private
но это не работает. Любые новые файлы, добавленные в category
или private
каталоги недоступны для добавления.
я мог бы просто git добавить силу, но я хотел бы, чтобы это было сделано через gitignore, если это возможно
2 ответов
обычно проще всего поставить просто .gitignore
на уровне где начинается материя. (Это также помогает, если вы когда-либо разделяли репозиторий или перемещали каталоги.) В этом случае вам нужно игнорировать все, кроме catalog
и private
на так public/media/.gitignore
поставить:
/*
!/catalog/
!/private/
и public/media/catalog/.gitignore
поставить:
/*
!/category/
важно (и причина, по которой ваши правила не работают) не игнорировать public/media/catalog
сам каталог, как и в противном случае все в нем будет проигнорировано, даже если вы не хотите игнорировать определенную часть его содержимого.
конечно, вы можете объединить это в один игнор в public/media
уровне, если вам нравится:
/*
!/catalog/
!/private/
/catalog/*
!/catalog/category/
решение с одним .gitignore на корневом уровне
вы пытались использовать один .gitignore
файл на корневом уровне репозитория. Как и вы, я обычно также централизую все игнорирования, чтобы держать вещи в порядке. В этом случае это сложно, потому что" невозможно повторно включить файл, если родительский каталог этого файла исключен" [источник].
мое уродливое решение для этого ограничения, которое я также исследую в своих связанных ответах здесь и здесь: повторно включите все родительские каталоги вдоль пути перед повторным включением нужного файла, сохраняя при этом другие файлы в этих родительских каталогах, повторно исключив их.
С, что, ваш .gitignore
структура:
public/media/**
!public/media/private
!public/media/catalog/
public/media/catalog/**
!public/media/catalog/category/