Как gitignore файлы в каталоге, но не файлы в его подкаталогах?

#git #gitignore

#git #gitignore

Вопрос:

Структура папок

  • foo
    • бар
      • file1.js
      • file2.js
      • баз
        • file3.js
        • file4.js

Я хотел бы gitignore файлы непосредственно внутри каталога «bar» (file1 и file2), но не файлы внутри любого подкаталога «bar» (в этом примере file3 и file4 не следует игнорировать).

Я проверил документы. Кажется неполным.

Ответ №1:

Вы можете игнорировать файлы в bar каталоге

 # foo/bar/.gitignore
*.js
 

а затем белый список в baz каталоге

 # foo/bar/baz/.gitignore
!*
 

Из документации по kernel.org:

Шаблоны, считываемые из файла .gitignore в том же каталоге, что и путь, или в любом родительском каталоге, при этом шаблоны в файлах более высокого уровня (вплоть до верхнего уровня рабочего дерева) переопределяются шаблонами в файлах более низкого уровня вплоть до каталога, содержащего файл. Эти шаблоны совпадают относительно расположения файла .gitignore . Проект обычно включает такие файлы .gitignore в свой репозиторий, содержащий шаблоны для файлов, созданных в рамках сборки проекта.

Комментарии:

1. Что? У каждого каталога может быть свой собственный gitignore? 🙂

2. Да. 🙂 О, и более подробные документы: kernel.org/pub/software/scm/git/docs/gitignore.html