Настроить git для отслеживания только одного расширения файла
У меня есть одно дерево каталогов со многими типами разных файлов. В родительском каталоге имеется 300 каталогов. В каждом каталоге могут быть другие подкаталоги.
Я хочу только отслеживать *.cocci во всех подкаталогах. Вот мой .gitignore:
*
!*.cocci
Но это не работает, поскольку файлы на подкаталогах не отслеживаются. Как я могу сказать git, что я хочу только отслеживать *.cocci во всех подкаталогах?
Ответы
Ответ 1
Прочитайте этот вопрос.
Вы хотите:
# Blacklist everything
*
# Whitelist all directories
!*/
# Whitelist the file you're interested in.
!*.cocci
Примечание. Это будет отслеживать файлы только *.cocci
. Ваш не работает, потому что вы игнорируете все (это первая строка), которая игнорирует все подкаталоги.
Ответ 2
Невозможно выполнить идентификацию каталога !dir
в .gitignore, но тогда все же можно добавить каталог вручную:
git add dir -f
Итак, если файл .gitignore выглядит так:
*
!*.txt
Затем, когда вы делаете git add .
, добавляются новые файлы *.txt
. Новый каталог не будет добавлен автоматически, его нужно добавить вручную git add dir -f
Ответ 3
Чтобы расширить ответ @simont, если мы хотим, чтобы белые списки *.cocci
файлов заданного каталога и его подкаталогов, я ошибочно ввел:
directory/*
!directory/*/
!directory/*.cocci
Кажется, что это не включает *.cocci
файлы под directory/subtree
.
Чтобы найти все *.cocci
файлы во всех подкаталогах directory
, введите следующее:
directory/**
!directory/*/
!directory/**/*.cocci
Ответ 4
Вы пробовали !*/*.cocci
вместо своего !*.cocci
?