Git LFS轨道文件夹递归

时间:2016-03-03 10:20:09

标签: git git-lfs

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

我想做这样的事情:

git lfs track myfolder/*

2 个答案:

答案 0 :(得分:89)

使用git lfs track "myfolder/**"和引号来避免shell已经扩展了模式。 track命令执行的所有操作都是写入.gitattributes,而.gitignore又使用(几乎)与<update id="javax.faces.ViewState"><![CDATA[-1644237968690251221:-7863929220167075939]]> 相同的模式匹配规则,请参阅PATTERN FORMAT说明。

答案 1 :(得分:3)

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

  1. 使用以下命令查找所有文件扩展名
find . -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u  
  1. 然后创建一个 .gitattribute 文件并添加 git lfs 跟踪语法。此命令会为您生成它,它会跟踪所有文件及其扩展名并创建 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. 包含大量小文件的大型存储库,这使得存储库的大小非常大。
  3. 任意数量的文件夹和子文件夹。