Я пытаюсь использовать файл .gitignore с отрицательными шаблонами (строки, начинающиеся с!), Но он работает не так, как я ожидал.
В качестве минимального примера у меня есть следующая структура каталогов:
C:/gittest
-- .gitignore
-- aaa/
-- bbb/
-- file.txt
-- ccc/
-- otherfile.txt
и в моем файле gitignore у меня есть это:
aaa/
!aaa/ccc/
Я понимаю (на основе этой страницы документа ), что файл aaa / ccc / otherfile.txt не следует игнорировать, но на самом деле git игнорирует все, что находится под aaa.
Не понимаю ли я это предложение: «Необязательный префикс!, Который отрицает шаблон; любой соответствующий файл, исключенный предыдущим шаблоном, будет снова включен»?
Кстати, это в Windows с msysgit 1.7.0.2.
Если вы хотите исключить все внутри
aaa
, но включитьaaa/ccc
и все, что ниже, вы должны использовать:Первая строка говорит git игнорировать все, что находится ниже
aaa
, вторая говорит ему не игнорировать папку,aaa/ccc
которая фактически «включает» третью строку, которая затем говорит ему не игнорировать все, что нижеaaa/ccc
.источник
aaa/ccc
любого уровня, у меня сработало!aaa/ccc/**
вместо!aaa/ccc/*
Если кто-то все еще не видит недавно не проигнорированных элементов при
git status
запуске, этоgit update-index
может помочь git увидеть изменения (по крайней мере, в версии 1.9.x gitbash).источник