Git LFS 递归跟踪文件夹

Git LFS track folder recursively

是否可以使用 Git LFS 递归跟踪文件夹及其子文件夹中包含的所有文件?

我想做这样的事情:

git lfs track myfolder/*

使用 git lfs track "myfolder/**",带引号以避免 shell 已经扩展了模式。 track 命令所做的就是写入 .gitattributes,后者使用(几乎)与 .gitignore 相同的模式匹配规则,请参阅 PATTERN FORMAT 描述。

这样您就可以跟踪具有任何子文件夹的任何文件夹。您想要递归跟踪文件夹数为“n”和“m”的文件夹 子文件夹的数量。我建议这样做。

  1. 使用以下命令查找所有文件扩展名
find . -type f | perl -ne 'print  if m/\.([^.\/]+)$/' | sort -u  
  1. 然后创建一个 .git 属性文件并添加 git lfs 跟踪语法。此命令为您生成它,它跟踪所有文件及其扩展名并创建 lfs 跟踪语法。
find . -type f | perl -ne 'print  if m/\.([^.\/]+)$/' | sort -u | awk '{print " filter=lfs diff=lfs merge=lfs -text"}' | sed 's/^/*./'
  1. 将粘贴输出复制到 .git 属性文件并提交。

适用于

  1. 任意数量的文件和文件夹。
  2. 包含大量小文件的大型存储库,这使得存储库非常大。
  3. 任意数量的文件夹和子文件夹。