Як говорить заголовок, чи можна додати "файли без крапок у них" у файл gitignore?
Я думаю, що це піклується про всі ці набридливі файли без розширень.
Як говорить заголовок, чи можна додати "файли без крапок у них" у файл gitignore?
Я думаю, що це піклується про всі ці набридливі файли без розширень.
Відповіді:
Ви можете спробувати комбінацію, схожу на:
*
!/**/
!*.*
Це gitignore
правило виключення ( заперечений візерунок ) має ігнорувати всі файли, крім тих, що мають розширення.
Як згадано нижче по Mad Фізик , правило:
Неможливо повторно включити файл, якщо батьківський каталог цього файлу виключений. (*
)
(*
: якщо певні умови не виконуються в git 2.?+, див. нижче)
Ось чому !/**/
важливо (білий-перелік батьківських папок рекурсивно), якщо ми хочемо передати файли з білим списком.
Я згадував те саме правило у подібних випадках, як:
Як Якуб Narębski коментарі , ви не можете ігнорувати всі файли extensionless.
Моя порада:
.gitignore
як показано вище: вже перероблені файли не будуть ігноровані (навіть якщо у них немає розширення). Усі інші будуть проігноровані.Для будь-яких майбутніх файлів без розширень, які ви хочете версії:
git add -f -- myFile
Зауважте, що з git 2.9.x / 2.10 (середина 2016?), Можливо, можна повторно включити файл, якщо батьківський каталог цього файлу виключений, якщо в шлях повторно не включено підстановку .
Nguyễn Thái Ngọc Duy ( pclouds
) намагається додати цю функцію:
Однак, оскільки одним із правил повторного включення було:
Частина каталогів у правилах повторного включення повинна бути буквальною (тобто ніяких символів)
Це як би там не працювало.
.gitignore
було б **
і !**.*
. Я знаю, що це не має значення, якщо зірочка розміщена попереду, але вона є більш чіткою та здоровою з тим, як оболонки поводяться з
!Makefile
. Будьте уважні, що у мене виникли проблеми з цим рішенням у Git 1.7.1, поки він працював чудово у 1.9.0. У моєму випадку додавання файлу до кореневого каталогу працювало чудово, але додавання файлу з розширенням всередині підкаталогу було показано ігнорованим. Це, мабуть, тому, що 1.7.1 ще не підтримував **
схему, дивіться тут !
**
додали в Git 1.8.2
. Чи є якісь недоліки щодо використання !*/
замість !/**/
?
*
!*/
!*.*
*
говорить git ігнорувати все.
!*/
то розблоковує все, що є каталогом. Це є вирішальним.
!*.*
unignores всі файли з розширенням.
Без цього !*/
правила каталоги без .
імені не будуть перераховані, і жоден із бажаних файлів не буде доданий поза кореневою папкою.
Для ознайомлення прочитайте ці два розділи у виділеній документації .gitignore :
Необов’язковий префікс "!" що заперечує візерунок; будь-який відповідний файл, виключений за попереднім шаблоном, знову буде включений. Неможливо повторно включити файл, якщо батьківський каталог цього файлу виключений. Git не перераховує виключені каталоги з міркувань продуктивності, тому будь-які шаблони вміщених файлів не мають впливу, незалежно від того, де вони визначені. Покладіть зворотний нахил ("\") перед першим "!" для шаблонів, які починаються з буквального "!", наприклад, "! важливо! .txt".
Якщо візерунок закінчується косою рисою, вона видаляється з метою наступного опису, але вона знайде лише збіг з каталогом. Іншими словами, foo / буде відповідати директорії foo та шляхам під нею, але не збігатиметься із звичайним файлом або символьним foo (посилається на це).
У моїх папках багато файлів із *.c, *.h, *.txt, *.csv
розширеннями тощо та бінарних файлів без будь-якого розширення. Тому мені потрібно було ігнорувати всі файли execpt *.c,*.h
і .gitignore
, Отже, це працює для мене з .gitignore
прикладу:
*/* #ignore all files in each directory
!*/*.c #unignore .c files in each directory
!*/*.h #unignore .h header files in each directory
!.gitignore #unignore .gitignore
README
,LICENSE
абоCOPYING
,INSTALL
, іMakefile
т.д., але ви завжди можете примусово додати їх , а потім вони відслідковуються