В одном довольно старом проекте, в директории /public встречаются файлы, которые генерируются самим проектом, но все другие файлы нужно взять под версионный контроль. Файлы, которые не нужно добавлять в Git можно записать таким шаблоном: ^[a-z0-9].php$ (регулярка на PHP, ^ - начало строки, $ - конец), но вместе с тем есть несколько файлов: index.php, main.php, etc, которые мониторить нужно, но они же попадают по шаблон ^[a-z0-9].php$. Просьба подсказать, как можно написать такой сценарий в .gitignore?
Asked
Active
Viewed 887 times
1
Nick Volynkin
- 34,094
Miron
- 840
2 Answers
2
Для того, чтобы исключить какой-то файл из игнорируемых, достаточно добавить маску совпадения с префиксом !:
# игнорировать все файлы и поддиректории
*
# но сохранить сам .gitignore
!.gitignore
Единственная проблема, с которой вы можете столкнуться - это сохранение файлов внутри поддиректории игнорированной директории:
*
# не сработает, потому что потомки subdirectory не будут распознаны
!subdirectory/file
Тогда приходится прибегать к хакам
*
!subdirectory
subdirectory/*
!subdirectory/file
etki
- 36,151
-
Не совсем то, что было нужно, но спасибо за полезную информацию про поддиректории и воскл. знак! – Miron Dec 18 '16 at 01:05
2
Пока ждал ответ - разобрался сам. Сначала нужно вручную добавить все нужные файлы и директории в индекс:
$ git add public/dir1/
$ git add public/dir2/
$ git add public/index.php
$ git add public/main.php
$ git add public/etc.php
А потом в .gitignore добавить строку:
public/*.php
И все... все оказалось намного проще, чем представлялось на первый взгляд.
Miron
- 840
.gitignore. У вас тоже впоследствии могут появиться новые файлы в/public, которые нужно будет версионировать. – Nick Volynkin Dec 18 '16 at 06:00