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

У меня есть папка, которая является только папкой шаблона T4, но она выводит файлы, сгенерированные кодом в другие каталоги. Поэтому я хочу игнорировать все, кроме файлов *.tt(например, *.cs, *.master, *.resx и т.д.). Есть одна добыча. У меня есть подпапка под названием static, которая содержит файлы, которые никогда не должны игнорироваться.

/Test.tt
/Test.cs
/TestHtml.tt
/TestHtml.html
/Static
   /Sub/Sub.cs
   /Sub/Sub2/Sub2.cs
   /Sub3/Sub4/Sub5/Sub5.html

Я хочу игнорировать /Test.cs и/Test.html, но включать все остальные файлы. Я пробовал следующее:

/.gitignore

# Ignore all
*

# But not these files...
!.gitignore
!*.tt

/Static/.gitignore

!*.*
#also have just tried blank

Я не могу получить git, чтобы игнорировать правильные вещи... Основная проблема - это "рекурсивное исключение", которое я хочу для Static/..

Ответ 1

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

например.

/*

!.gitignore
!*.tt
!/Static/

Ответ 2

Что-то вроде:

/*
!.gitignore
!*.tt
!/Static/

должен работать.

Посмотрите на мой ответ ниже, чтобы сделать его более сложным, если вы хотите подкаталог unignore в какой-либо другой папке, когда вы игнорируете все остальное.

Невозможно понять, как gitignore игнорирует папки