Там ви відмінність між www, www/і www/*.
В основному з документації та моїх власних тестів, wwwзнайдіть збіг з файлом або каталогом, www/збігається лише з каталогом, тоді як www/*відповідає каталогам і файлам всередині www.
Я лише обговорюватиму відмінності між www/і www/*тут, оскільки відмінності між wwwі www/очевидні.
Бо www/git ігнорує сам каталог www, а значить, git навіть не загляне всередину. Але для www/*, git перевіряє всі файли / папки всередині wwwі ігнорує їх усі за допомогою шаблону *. Здається, це призводить до тих же результатів, оскільки git не відстежує порожню папку, wwwякщо всі її дочірні файли / папки ігноруються. І справді результати не матимуть ніякої різниці у випадку з ОП 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/*