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

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

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

Я попробовал это за мой .gitignore файл:

foo/
bar.txt

Но к сожалению мерзавец применяет это рекурсивно, так, чтобы otherdir/bar.txt и otherdir/foo/ также будьте проигнорированы, который не является тем, что я хочу.

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

59
задан pauldoo 19 March 2010 в 11:12
поделиться

2 ответа

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

/foo/
/bar.txt

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

100
ответ дан 24 November 2019 в 18:22
поделиться

Из справочной страницы gitignore:

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

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

11
ответ дан 24 November 2019 в 18:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: