Есть различия между www, www/и www/*.
В основном из документации и моих собственных тестов wwwнайти совпадение с файлом или каталогом, соответствует www/только каталогу, а www/*соответствует каталогам и файлам внутри www.
Я буду обсуждать только различия между www/и www/*здесь, поскольку различия между wwwи www/очевидны.
Ведь www/git игнорирует сам каталог www, а это значит, что git даже не заглянет внутрь. Но для www/*git проверяет все файлы / папки внутри wwwи игнорирует их все с шаблоном *. Похоже, это приводит к тем же результатам, поскольку git не будет отслеживать пустую папку, wwwесли все ее дочерние файлы / папки игнорируются. И действительно, результаты не будут различаться для случая OP www/или www/*автономного. Но это имеет значение, если совмещать с другими правилами.
Например, что, если мы хотим только включить, www/1.txtно игнорировать всех остальных внутри www?
Следующее .gitignoreне сработает.
www/
!www/1.txt
Хотя следующее .gitignoreработает, почему?
www/*
!www/1.txt
В первом случае git просто игнорирует каталог wwwи даже не заглядывает внутрь, чтобы www/1.txtснова включить его. Первое правило исключает родительский каталог, wwwно не исключает www/1.txt, и в результате www/1.txtне может быть " включено снова ".
Но для последнего git сначала игнорирует все файлы / файлы, находящиеся под ним www, а затем снова включает один из них, который есть www/1.txt.
В этом примере могут помочь следующие строки в документации:
Необязательный префикс "!" который сводит на нет узор; любой соответствующий файл, исключенный предыдущим шаблоном, снова будет включен. Невозможно повторно включить файл, если родительский каталог этого файла исключен.
binиbin/заключается в том, что первый игнорирует файлы или папки, а второй - только папки. Я не знаю разницу сbin/*