如何为Git仓库子文件夹配置不同的Git LFS设置?
解决Git LFS全局启用后子文件夹禁用无效的问题
问题原因
当根目录.gitattributes启用LFS规则时,子文件夹的禁用规则需要显式取消LFS相关的属性,而非仅设置-text等其他属性。Git属性的优先级中,子目录规则会覆盖根目录,但如果子目录规则没有明确移除根目录已设置的filter=lfs等属性,这些属性会继续生效。
修复方案
修改no-lfs/.gitattributes文件内容为:
*.[mM][aA][tT] -filter=lfs -diff=lfs -merge=lfs -text
这里通过-filter=lfs、-diff=lfs、-merge=lfs明确取消LFS相关的属性,彻底覆盖根目录的LFS规则。
验证与后续操作
- 若目标文件已被Git追踪,需要重新应用属性规则:
git rm --cached no-lfs/file_02.mat git add no-lfs/file_02.mat
- 执行
git lfs ls-files检查,此时no-lfs/file_02.mat不应出现在结果中,而lfs/file_01.mat会正常被LFS管理。
补充说明
当根目录禁用LFS时子文件夹启用有效,是因为子文件夹的规则新增了filter=lfs等属性,会覆盖根目录的禁用规则;而反向场景下,必须显式移除已存在的LFS属性才能生效。
内容的提问来源于stack exchange,提问作者michiba
相关产品推荐
相关产品推荐

