Я бачив подібні запитання ( 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/**/*
для кожного з них. Перші видаляють каталоги, але вам потрібен другий, щоб видалити всі типи файлів.