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

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

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

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

foo/
bar.txt

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

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

Ответы [ 2 ]

97 голосов
/ 19 марта 2010

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

/foo/
/bar.txt

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

11 голосов
/ 19 марта 2010

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

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

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

...