Я бачив подібні запитання ( 1 , 2 та 3 ), але я не отримую від них належного рішення.
Мені потрібно ігнорувати всі файли в певній папці, крім певного типу файлу. Папка є підкаталогом кореневого шляху. Дозвольте назвати папку Resources. Оскільки я не хочу ускладнювати ситуацію, дозвольте мені ігнорувати файли у всіх папках, Resourcesде вони знаходяться.
Це найпоширеніше рішення (у всіх повторюваних питаннях)
# Ignore everything
*
# Don't ignore directories, so we can recurse into them
!*/
# Don't ignore .gitignore
!.gitignore
# Now exclude our type
!*.foo
Проблема цього рішення полягає в тому, що воно зупиняє відстеження нещодавно доданих файлів (оскільки *ігнорує всі файли). Я не хочу продовжувати виключати кожен тип файлу. Я хочу нормальну поведінку, коли, якщо додається новий файл, це git statusпоказує.
Нарешті я отримав рішення тут . Рішення полягає в додаванні іншого .gitignoreфайлу в Resourcesпапку. Це працює правильно.
Чи можу я досягти того самого за допомогою одного файлу ігнорування? Я вважаю, що багато файлів ігнорування в різних каталогах трохи незграбні.
Це те, що я намагаюся досягти:
# Ignore everything under Resources folder, not elsewhere
Resources
# Don't ignore directories, so we can recurse into them
!*Resources/
# Now exclude our type
!*.foo
Але це дає протилежний результат. Він ігнорує *.fooтипи та відстежує інші файли.
DirectoryName1/** DirectoryName1/**/*для кожного з них. Перші видаляють каталоги, але вам потрібен другий, щоб видалити всі типи файлів.