Как исключить файл только из корневой папки в Git

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

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

Ответ 1

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

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

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

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

/config.php

Ответ 2

Используйте /config.php.

Ответ 3

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

/config.php
!/*/config.php

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

/config.php

Ответ 4

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

#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