.gitignore исключить файлы в каталог, но не определенные каталоги
application/cache/*
application/cache/folder/*
application/cache/folder/onemorefolder/*
Это не работает. Когда я клонирую проект, нет папки "application/cache"
или "application/cache/folder"
и т.д....
Я бы хотел, чтобы файлы в папках кеша не были кэшированы, но были папки, так что права доступа к папкам и их существование.
Ответы
Ответ 1
Git не отслеживает папки, только файлы, поэтому, если вы игнорируете все в папке, Git не будет ничего отслеживать. Вы можете добавить файл .gitignore
в каждый каталог (application/cache
, application/cache/folder
, application/cache/folder/onemorefolder/
) со следующим содержимым:
*
!.gitignore
Затем вы можете добавить эти каталоги, и только файл .gitignore
в каждом каталоге будет добавлен, но это означает, что теперь будут отслеживаться каталоги (т.е. созданные при клонировании).
Ответ 2
Git не отслеживает пустые каталоги. Просто добавьте пустые файлы-заполнители в папки, которые вы хотите зафиксировать.
touch application/cache/.keep
git add -f application/cache/.keep
Сделайте это также с каждой "пустой" папкой. Позже вы можете игнорировать эти файлы, они действительно существуют только для того, чтобы git создавал эти каталоги на клоне. Записи в .gitignore
не позволяют отслеживать другие файлы в папках (если вы не заставляете их с помощью git add -f
;)).
Ответ 3
Есть еще один, возможно, более чистый способ сделать это. Вместо того, чтобы иметь файлы sub .gitignore в папках, которые вы хотите сохранить. Вы можете поместить это в корень .gitignore следующим образом:
application/cache/*
application/cache/folder/*
application/cache/folder/onemorefolder/*
!*.gitkeep
Теперь просто создайте и передайте пустые .gitkeep файлы в каталоги, как указано выше. Затем папка будет отслежена с этими .gitkeep файлами, но ни одно из содержимого не будет отслежено.
Ответ 4
вы можете поместить файл .gitignore в каждый из них (например, сказал mipadi) или сделать что-то подобное в своем корневом файле .gitingnore
/assets/*/
/assets/*.*
он отлично работает для меня
Ответ 5
Visual Studio не понравился принятый ответ. Я должен был добавить новую строку перед *, чтобы она работала.
# Ignore all files in this folder.
*
!.gitignore