【发布时间】:2016-03-03 10:20:08
【问题描述】:
是否可以使用 Git LFS 递归跟踪文件夹及其子文件夹中包含的所有文件?
我想做这样的事情:
git lfs track myfolder/*
【问题讨论】:
-
好问题。事实上,这对于这个社区来说可能是一个广泛有用的文档。有时,理解 Git LFS 可能是一个挑战。感谢您的努力和描述。
是否可以使用 Git LFS 递归跟踪文件夹及其子文件夹中包含的所有文件?
我想做这样的事情:
git lfs track myfolder/*
【问题讨论】:
使用git lfs track "myfolder/**",带引号以避免shell 已经扩展了模式。 track 命令所做的只是写入.gitattributes,而.gitattributes 又使用(几乎)与.gitignore 相同的模式匹配规则,请参见PATTERN FORMAT 描述。
【讨论】:
myfolder/**在传递给Git之前被shell扩展了。我已经更新了我的答案以添加引号,这应该可以解决这个问题。
.gitattributes 不遵循(全部)与上述 git-scm 链接记录的相同模式匹配规则,否则“myfolder/**”可以替换为“myfolder/”,与声明“foo/ 将匹配一个目录 foo 和它下面的路径”。我认为(即未经证实的)“myfolder/”在.gitignore 中有效,因为忽略过程会通过文件系统下降,在匹配时停止,但.gitattributes 会根据预先存在的列表进行检查。如果您发现不同,请使用 git/git-lfs 版本添加评论来扭转这一点。
cmd。
git lfs track "myfolder/**/*" 才能使其工作。
had to use git lfs track myfolder/**/*
通过这种方式,您可以跟踪任何包含任何子文件夹的文件夹。您想递归跟踪文件夹数为“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/^/*./'
它适用于
【讨论】: