Можно ли рекурсивно отслеживать все файлы, содержащиеся в папке и ее подпапках, с помощью Git LFS?
Я хотел бы сделать что-то вроде этого:
git lfs track myfolder/*
Можно ли рекурсивно отслеживать все файлы, содержащиеся в папке и ее подпапках, с помощью Git LFS?
Я хотел бы сделать что-то вроде этого:
git lfs track myfolder/*
Используйте git lfs track "myfolder/**"
с кавычками, чтобы оболочка не расширяла шаблон. Все, что делает команда track
, — это запись в .gitattributes
, которая, в свою очередь, использует (почти) те же правила сопоставления шаблонов, что и .gitignore
, см. ФОРМАТ ШАБЛОНА описание.
myfolder/**
было расширено оболочкой до того, как было передано Git. Я обновил свой ответ, добавив цитаты, которые должны это исправить.
- person sschuberth; 03.03.2016
.gitattributes
НЕ следует (ВСЕ) тем же правилам сопоставления шаблонов, которые описаны в приведенной выше ссылке git-scm, в противном случае myfolder/** может быть заменен на myfolder/ в соответствии с утверждением foo/ будет соответствовать каталогу foo и путям под ним. Я думаю (т.е. не подтверждено), что myfolder/ работает в .gitignore
, потому что процесс игнорирования проходит через файловую систему, останавливаясь на совпадении, но .gitattributes
проверяется на соответствие уже существующему списку. Если вы найдете другое, добавьте комментарий с версией git/git-lfs, которая изменила это.
- person SensorSmith; 19.01.2018
git lfs track "folder/**"
работает рекурсивно, проверено на 2.19.windows.1
- person Tamir Daniely; 17.10.2018
git lfs track "folder/**"
мне определенно не подходит. Вы проверили, что это работает, если ваши файлы находятся ниже, например. для файла folder/foo/bar/blub.c
? Я скопировал тот же шаблон, который оказался в моих .gitattributes, в мой .gitignore, и файлы успешно игнорируются. Но не удалось успешно отследить git lfs (конечно, до того, как я добавил шаблон в gitignore). Это с git 2.17.1.
- person Nir Friedman; 30.10.2018
cmd
.
- person sschuberth; 30.10.2018
git lfs track Assets/Large\ Assets/\*\*
В Ubuntu мне приходилось экранировать * и пробелы, а также не использовать двойные кавычки.
- person mzmrk; 06.01.2019
git lfs track "Assets/"
будет отслеживать все файлы в каталог Assets и все подкаталоги. Таким образом, кажется, что решение должно быть git lfs track "myfolder/"
, а не git lfs track "myfolder/**"
. Эта справочная статья неверна или **
неверна?
- person Senseful; 31.01.2019
git lfs track "myfolder/**"
, как предлагает этот ответ. Дополнительные сведения и этапы проверки можно найти в этом ответе.
- person Senseful; 31.01.2019
git lfs track "myfolder/**/*"
, чтобы заставить его работать.
- person Luc; 12.04.2019
had to use git lfs track myfolder/**/*
без кавычек на MacOS
- person DavidS1992; 24.04.2020
Таким образом, вы можете отслеживать любые папки с любой подпапкой. Вы хотите рекурсивно отслеживать папки с количеством папок n и количеством подпапок m. Я бы рекомендовал делать это таким образом.
find . -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u
find . -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u | awk '{print $1" filter=lfs diff=lfs merge=lfs -text"}' | sed 's/^/*./'
Это работает для