Как исключить файл только из корневой папки в Git - PullRequest
333 голосов
/ 03 сентября 2010

Мне известно об использовании файла .gitignore, чтобы исключить добавление некоторых файлов, но у меня есть несколько файлов config.php в дереве исходных текстов, и мне нужно исключить только один, расположенный в корне, в то время как другие находятся под контролем версий.

Что я должен написать в .gitignore, чтобы это произошло?

Ответы [ 4 ]

506 голосов
/ 03 сентября 2010

Из документации :

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

Начальная косая черта совпадает с началом пути. Например, «/*.c» соответствует «cat-file.c», но не «mozilla-sha1 / sha1.c».

Таким образом, вы должны добавить следующую строку в корень .gitignore:

/config.php
74 голосов
/ 03 сентября 2010

Использование /config.php.

24 голосов
/ 17 января 2015

Старые версии git требуют, чтобы вы сначала определили шаблон игнорирования и сразу же (на следующей строке) определили исключение.[протестировано в версии 1.9.3 (Apple Git-50)]

/config.php
!/*/config.php

Для более поздних версий требуется только следующее [протестировано в версии 2.2.1]

/config.php
14 голосов
/ 18 сентября 2014

Если вышеуказанное решение не работает для вас, попробуйте это:

#1.1 Do NOT ignore file pattern in  any subdirectory
!*/config.php
#1.2 ...only ignore it in the current directory
/config.php

##########################

# 2.1 Ignore file pattern everywhere
config.php
# 2.2 ...but NOT in the current directory
!/config.php
...