Git игнорировать все файлы определенного типа, кроме всех подкаталогов определенного каталога?
Я пытаюсь сделать файл gitignore, который будет игнорировать все .jar файлы, если они не находятся в папке с именем libs. Вот моя основная файловая структура:
-.gitignore
-libs/
-goodFile.jar
-someFolder/
-subFolder/
-alsoGood.jar
-otherCode/
-fileToExclude.jar
-otherOtherCode/
-otherSubfolder/
-alsoExclude.jar
В настоящее время в .gitignore я пробовал:
*.jar
!libs
!libs/
!libs/*
!libs/**
!libs/**/
!libs/**/*.jar
!libs/*.jar
Либо сами по себе, в сочетании, либо даже все вместе. Ни один из них не работает. Единственный способ, которым я нашел это, - либо вставить другой файл .gitignore в libs/
(который я бы предпочел избежать), либо использовать строку !libs/*/*/*.jar
для каждого возможного уровня подкаталога. Есть ли способ заставить его игнорировать все банки, кроме тех, что есть в libs?
Ответы
Ответ 1
Как насчет:
*.jar
!libs/**/*.jar
Порядок важен.
Edit
Я использовал вашу структуру проекта и имел следующий результат после того, как сделал git add
и git status
$ git stat
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .gitignore
new file: libs/goodFile.jar
new file: libs/someFolder/subFolder/alsoGood.jar
new file: libs/someFolder/subFolder/test/anotherFolder/test.jar
$ cat .gitignore
*.jar
!libs/**/*.jar