Git игнорировать все файлы, кроме одной структуры расширения и папки

Это мой .gitignore:

#ignore all kind of files
*
#except php files
!*.php

Все, что я хочу, это игнорировать все файлы, кроме .php, но с этим .gitignore я также игнорирую папки...

Есть ли способ сказать git принять мою структуру папок проекта, сохраняя только дорожку .php файлов?

Кажется, теперь я не могу добавить папки в свое репо:

[email protected]:~/workspace/motor$ git add my_folder/
The following paths are ignored by one of your .gitignore files:
my_folder
Use -f if you really want to add them.
fatal: no files added

Ответ 1

Это просто, просто добавьте еще одну запись !my_folder в .gitignore

#ignore all kind of files
*
#except php files
!*.php
!my_folder

Последняя строка будет особенно заботиться о my_folder и не будет игнорировать любые php файлы внутри нее; но файлы в других папках будут по-прежнему игнорироваться из-за первого шаблона *.

ИЗМЕНИТЬ

Думаю, я неправильно понял ваш вопрос. Если вы хотите игнорировать все файлы, кроме файлов .php, вы можете использовать

#ignore all kind of files
*.*
#except php files
!*.php

Это не будет игнорировать любой файл, который не имеет расширения (пример: если у вас есть README, а не README.txt) и будет игнорировать любую папку с . в ее имени (пример: каталог с именем module.1).

FWIW, git не отслеживает каталоги, и, следовательно, нет способа указать правила игнорирования для каталога vs file