Примечание из документации gitignore :
Невозможно повторно включить файл, если исключен родительский каталог этого файла.
Проблема с вашим шаблоном заключается в том, что jobs/**/builds/*
исключает все числовые каталоги компоновки и все каталоги под ними , поэтому ваше последующее отрицание не имеет никакого эффекта, поскольку шаблон исключения является родителем archive
каталог.
Что вам нужно сделать, это настроить шаблон так, чтобы исключить файлы / каталоги из отдельного числового каталога сборки, что по-прежнему позволяет повторно включать каталог archive
jobs/**/builds/*/*
!jobs/**/builds/*/archive
Пояснение:
- Исключить все файлы / каталоги внутри
jobs/<job-name>/builds/<build-no>/
- Обратите внимание на использование
*
вместо **
; одиночная звездочка соответствует только одному каталогу вместо расширения, чтобы исключить все вложенные подкаталоги
- Повторно включить
jobs/<job-name>/builds/<build-no>/archive
(и любые файлы / каталоги в нем)
Я убедился, что эти шаблоны должны работать как для фристайла, так и для многоотраслевого стиля конвейерного задания.