Как добавить что-то в .gitignore, чтобы совпадение не было рекурсивным?
Как добавить что-то в .gitignore
, чтобы совпадение не было рекурсивным?
Например, я хочу игнорировать каталог foo
и файл bar.txt
в текущем каталоге, но не все, что существует в подкаталогах.
Я пробовал это для моего файла .gitignore
:
foo/
bar.txt
Но, к сожалению, git применяет это рекурсивно, так что otherdir/bar.txt
и otherdir/foo/
также игнорируются, что не то, что я хочу.
(Есть ли команда в git, которая показывает мне все проигнорированные файлы и ссылается на файл .gitignore
, который отвечает за игнорирование файла? Это было бы полезно для отладки.)
Ответы
Ответ 1
Решение состоит в том, чтобы поместить верхнюю косую черту в записи .gitignore
:
/foo/
/bar.txt
(Я думал, что попробовал это, прежде чем публиковать на StackOverflow, но, очевидно, я не пробовал это правильно, так как это работает отлично.)
Ответ 2
Из man-страницы gitignore:
Дополнительный префикс! что отрицает шаблон; любой сопоставимый файл, исключенный предыдущим шаблоном, снова будет включен. Если совпадающий шаблон совпадает, это приведет к переопределению источников с более низким приоритетом.
Итак !*
, поскольку первая строка в вашем .gitignore очистит все предыдущие шаблоны.