Git LFS
Git_LFS
#tech / ops / git
#type / concept
#status / growing
Git LFS 全面指南
基础概念
什么是Git LFS
- Git Large File Storage (Git LFS) 是Git的扩展
- 用于高效管理大型二进制文件(如音频、视频、数据集等)
- 用指针文件替代实际大文件,只在需要时下载
为什么需要Git LFS
- Git本身不适合管理大文件(性能下降)
- 避免仓库体积膨胀
- 支持版本控制大文件而不拖慢工作流
- 团队协作时节省带宽和存储空间
工作原理
- 用文本指针替换大文件(存储实际文件元数据)
- 实际文件存储在LFS服务器上
- 检出时自动下载所需版本的大文件
使用指南
安装配置
# 安装Git LFS
git lfs install
基本命令
# 跟踪指定类型文件
git lfs track "*.psd"
# 查看已跟踪模式
git lfs track
# 列出LFS文件
git lfs ls-files
文件跟踪
- 通过
.gitattributes文件管理跟踪规则 - 示例配置:
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
常用工作流
# 添加并提交大文件
git add large_file.psd
git commit -m "Add design file"
# 推送时包括LFS文件
git push origin main
实战经验
最佳实践
- 尽早设置LFS(最好在项目初期)
- 明确需要跟踪的文件类型
- 避免跟踪频繁更改的大文件
- 定期清理旧版本LFS文件
典型应用场景
- 游戏开发(3D模型、纹理)
- 多媒体项目(视频、音频)
- 数据集管理(机器学习)
- 设计资源(PSD/AI文件)
性能优化
- 使用
git lfs fetch --all预取所有LFS对象 - 配置
.lfsconfig优化性能 - 定期执行
git lfs prune清理本地缓存 - 使用浅克隆减少初始下载量
常见问题解决
- 文件超出GitHub LFS配额:
- 使用自托管LFS服务器
- 压缩大文件
- 删除历史版本
- 忘记跟踪文件:
git rm --cached large_file.psd
git lfs track "*.psd"
git add large_file.psd
经验总结
使用心得
- LFS显著改善大文件管理体验
- 需要团队统一配置
- 合理规划存储配额
- 与CI/CD系统集成需要额外配置
成本考量
- 托管服务商的LFS存储限制
- 带宽消耗(特别是频繁切换分支时)
- 自建LFS服务器的维护成本
迁移建议
- 小仓库:直接添加LFS并重写历史
- 大仓库:分批迁移关键文件类型
- 使用
git lfs migrate工具
信息参考
官方资源
推荐工具
- BFG Repo-Cleaner(仓库清理)
- git-filter-repo(历史重写)
- LFS迁移工具包
扩展阅读
- 《Pro Git》中关于LFS的章节
- GitHub的LFS最佳实践指南
- GitLab大文件存储方案比较