1. Игнорируйте каталог в корне
В корневом .gitignore это правило исключает logs/app.log и всё содержимое корневого logs, но разрешает отслеживать packages/api/logs/app.log. Начальный / привязывает шаблон к каталогу этого .gitignore.
/logs/ 2. Игнорируйте каталоги на любой глубине
Используйте этот вариант для всех каталогов logs. Конечный / ограничивает правило каталогами; logs без него может совпасть и с файлом.
Во вложенном .gitignore пути относительны к нему: /logs/ означает местный logs, а не корень репозитория. packages/api/logs/ уже содержит внутренние / и относителен к расположению .gitignore.
logs/ 3. Проверьте область действия
Создайте оба неотслеживаемых примера и выполните команду из корня. Сравните источник и шаблон:
git check-ignore -v -- logs/app.log packages/api/logs/app.log/logs/ должен совпасть только с корневым путём, logs/ — с обоими. Другие правила могут изменить результат. Отслеживаемые файлы требуют отдельной обработки; для сохранения файла внутри игнорируемого каталога см. статью об исключениях.
Точное поведение и подробности описаны в официальных источниках: Документация Git · Документация git check-ignore