应按需控制Git LFS下载行为:CI中禁用自动拉取,仅显式获取必需文件;源稿(.psd/.fbx)进LFS但跳过下载,成品资源据体积和更新频率选择直存Git或LFS;配合.gitattributes、.lfsconfig、git lfs prune及校验确保稳定。

在Linux上用Git LFS管理大文件静态资源时,自动化拉取(比如CI/CD流水线中执行 git clone)默认会下载所有LFS对象,容易引发带宽打满、超时失败或构建卡顿。关键不是“禁用LFS”,而是**按需控制下载行为**——让自动化流程只拉取真正需要的资源,跳过无关的大文件。
明确区分用途:CI环境只需运行时文件,不需设计源稿
多数静态资源(如.psd、.fbx、.aep)是设计/美术产出的原始文件,CI构建根本用不到;而.png、.glb、.mp3等才是实际打包发布的成品。应按用途分类跟踪:
- 用
git lfs track "*.psd"、git lfs track "*.blend"等标记源文件——它们进LFS,但CI可跳过 - 对导出后的成品(如
assets/*.png),可选择是否进LFS:若体积稳定且变更少,直接纳入Git更轻量;若频繁更新且单个超50MB,再用LFS - 提交
.gitattributes后务必git add .gitattributes并 commit,否则LFS规则不生效
CI脚本中禁用自动LFS下载,按需触发
默认 git clone 会调用 git lfs pull 下载全部LFS对象。在CI中应关闭该行为,改用显式、受限的拉取:
系统化设计数字化解决方案,涵盖方案类型识别、政策背景分析、需求分析、建设思路设计、架构设计(业务、功能、数据、技术四维度)、技术选型、具体建设内容、实施规划、风险评估和投资估算的全流程能力。适用于规划类、申报类、可研类、投标类和工作汇报类等多种方案产出场景,覆盖政府数字化转型和企业数字化转型两大核心领域。
- 克隆时加参数:
git clone -c filter.lfs.smudge=false -c filter.lfs.required=false—— 完全跳过LFS smudge,工作区只留指针文件 - 后续仅下载必需文件:
git lfs checkout -- assets/textures/ main_menu_bg.png或git lfs fetch --include="assets/**.glb" && git lfs checkout - 若使用GitHub Actions,可在
actions/checkout@v4中设置:lfs: false,再单独用git lfs pull --include指定路径
预过滤LFS对象,减小远程传输量
即使跳过自动下载,git clone 仍会拉取LFS指针和元数据(很小),但远程LFS服务器可能存有大量历史版本。可通过以下方式清理冗余:
- 定期运行
git lfs prune删除本地已不用的LFS缓存(建议放在CI清理步骤) - 在仓库根目录建
.lfsconfig,指定LFS服务器地址,避免误连公共LFS服务 - 对长期不用的旧分支,用
git lfs migrate import --include="*.wav" --exclude="*" --to-ref=main将特定文件迁移到新分支,再删除旧ref,减少LFS对象总数
验证与兜底:确保关键文件一定就位
自动化流程不能依赖“运气”。应在拉取后加校验步骤:
- 检查指针文件是否完整:
find . -name "*.png" -path "./assets/*" -exec grep -q "version https://git-lfs.github.com/spec/v1" {} \; -print | wc -l - 对必须存在的文件,强制拉取并校验大小:
git lfs checkout assets/icon.svg && [ $(stat -c%s assets/icon.svg) -gt 1000 ] || exit 1 - 若项目允许,将核心静态资源(如logo、启动图)直接放入Git(










