Ответ 1
Как проиллюстрировано здесь и подробно описано в разделе этот вопрос ", функция fnmatch() используется для интерпретации шаблонов glob, что означает, что регулярные выражения не поддерживаются.
Вот что gitignore
man page:
В противном случае
git treats the pattern as a shell glob suitable for consumption by fnmatch(3)
с флагомFNM_PATHNAME
: подстановочные знаки в шаблоне не будут соответствовать/
в пути.
Например, "Documentation/*.html
" соответствует "Documentation/git.html
", но не "Documentation/ppc/ppc.html
" или "tools/perf/Documentation/perf.html
".
Вы можете увидеть соответствие между шаблонами глобалов и регулярными выражениями в тех questions.