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