使用Git LFS,是否可以递归跟踪包含在文件夹及其子文件夹中的所有文件?
我想做类似于这样的事情:
git lfs track myfolder/*
git lfs track "myfolder/**"
,使用引号避免shell已经扩展了模式。 track
命令所做的只是写入到 .gitattributes
,它使用(几乎)与 .gitignore
相同的模式匹配规则,详见PATTERN FORMAT 的描述。myfolder/**
已经被shell扩展了。我已经更新了我的回答,添加了引号,应该可以解决这个问题。 - sschuberth.gitattributes
文件并不完全遵循上述git-scm链接所记录的模式匹配规则,否则"myfolder/**"就可以被"myfolder/"替换,符合语句"foo/将匹配目录foo及其下面的路径"。 我认为(未经确认)"myfolder/"在.gitignore
中可行是因为忽略过程会经过文件系统并在匹配时停止,但.gitattributes
则与预先存在的列表进行匹配。如果您发现有不同情况,请注明反转的git/git-lfs版本并添加评论。 - SensorSmithgit lfs track "myfolder/**/*"
才能使其正常工作。 - Luchad to use git lfs track myfolder/**/*
命令(不带引号)在 MacOS 上进行了操作。 - DavidS1992这样您就可以跟踪任何带有子文件夹的文件夹。您想要递归地跟踪带有“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/^/*./'
对于以下情况有效: