Там ви відмінність між 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/*