146

Is it possible to track recursively all files contained in a folder and its subfolders with Git LFS ?

I would like to do something like this :

git lfs track myfolder/*
4

2 回答 2

215

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

于 2016-03-03T10:41:45.980 回答
3

这样您就可以使用任何子文件夹跟踪任何文件夹。您想递归地跟踪具有“n”个文件夹和“m”个子文件夹的文件夹。我建议这样做。

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

它适用于

  1. 任意数量的文件和文件夹。
  2. 带有大量小文件的大型 repo,这使得 repo 大小非常大。
  3. 任意数量的文件夹和子文件夹。
于 2021-01-07T06:43:50.780 回答