Подтвердить что ты не робот

Как добавить что-то в .gitignore, чтобы совпадение не было рекурсивным?

Как добавить что-то в .gitignore, чтобы совпадение не было рекурсивным?

Например, я хочу игнорировать каталог foo и файл bar.txt в текущем каталоге, но не все, что существует в подкаталогах.

Я пробовал это для моего файла .gitignore:

foo/
bar.txt

Но, к сожалению, git применяет это рекурсивно, так что otherdir/bar.txt и otherdir/foo/ также игнорируются, что не то, что я хочу.

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

4b9b3361

Ответ 1

Решение состоит в том, чтобы поместить верхнюю косую черту в записи .gitignore:

/foo/
/bar.txt

(Я думал, что попробовал это, прежде чем публиковать на StackOverflow, но, очевидно, я не пробовал это правильно, так как это работает отлично.)

Ответ 2

Из man-страницы gitignore:

Дополнительный префикс! что отрицает шаблон; любой сопоставимый файл, исключенный предыдущим шаблоном, снова будет включен. Если совпадающий шаблон совпадает, это приведет к переопределению источников с более низким приоритетом.

Итак !*, поскольку первая строка в вашем .gitignore очистит все предыдущие шаблоны.