.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 /.,

2 ответа

Решение

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

например

/*

!.gitignore
!*.tt
!/Static/

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

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

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

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

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

Другие вопросы по тегам