Skip to content

Git LFS 安装与配置指南

Git Large File Storage (LFS) 是 Git 的扩展,用于高效处理大文件。本指南将帮助团队成员正确安装和配置 Git LFS。

📋 概览

Git LFS 通过将大文件存储在独立的服务器上,而在 Git 仓库中只保留轻量级的指针文件,从而解决了传统 Git 处理大文件时的性能问题。

主要优势

  • 🚀 更快的克隆速度 - 仅下载需要的大文件版本
  • 💾 节省存储空间 - 避免在本地存储大文件的所有历史版本
  • 提升性能 - 减少 Git 操作的内存和时间消耗
  • 🔄 无缝集成 - 与现有 Git 工作流程完全兼容

存储位置和费用

Git LFS 文件存储在以下位置:

  • GitHub: LFS 文件存储在 GitHub 的 LFS 服务器上
  • GitLab: 存储在 GitLab LFS 服务中
  • 自托管: 可配置自己的 LFS 服务器

GitHub LFS 收费情况(2025年)

账户类型免费额度超出费用
个人免费账户1GB 存储 + 1GB/月带宽$5/月 每50GB存储包
个人 Pro2GB 存储 + 2GB/月带宽同上
组织与个人账户相同同上
企业联系销售企业定价

⚠️ 重要:

  • LFS 带宽按下载计算,每次 git clonegit pull 都会消耗带宽
  • 删除 LFS 文件不会立即释放存储空间,需要等待垃圾回收
  • 建议监控 LFS 使用量:git lfs fsck

🛠️ 安装指南

macOS

使用 Homebrew (推荐)

bash
brew install git-lfs

使用官方安装包

  1. 下载安装包:https://git-lfs.github.io/
  2. 双击运行 .pkg 文件
  3. 按照安装向导完成安装

Linux

Ubuntu/Debian

bash
sudo apt update
sudo apt install git-lfs

CentOS/RHEL/Fedora

bash
# CentOS/RHEL
sudo yum install git-lfs

# Fedora
sudo dnf install git-lfs

Windows

使用 Git for Windows (推荐)

Git LFS 已集成在 Git for Windows 2.14.0+ 中,无需额外安装。

使用 Chocolatey

powershell
choco install git-lfs

⚙️ 配置步骤

1. 全局初始化

安装完成后,需要在系统中初始化 Git LFS:

bash
git lfs install

💡 提示: 这个命令只需要运行一次,它会在全局 Git 配置中启用 LFS。

2. 验证安装

bash
git lfs version

3. 仓库配置

克隆已配置 LFS 的仓库:

bash
git clone https://github.com/yourusername/step-by-step-go.git
cd step-by-step-go

📝 .gitattributes 文件详解

.gitattributes 文件用于配置 Git 如何处理不同类型的文件,不仅限于 LFS。

启用 LFS 跟踪的影响

当在 .gitattributes 中配置 LFS 跟踪后:

  1. 文件存储变化:

    • 大文件本体存储在 LFS 服务器
    • Git 仓库中只保存指针文件(约100字节)
  2. 工作流程变化:

    • git add 时文件被上传到 LFS
    • git clone/pull 时按需下载 LFS 文件
    • 文件在工作目录中正常显示和编辑
  3. 性能影响:

    • 仓库克隆更快
    • Git 历史记录更小
    • 需要网络连接才能访问 LFS 文件

.gitattributes 的其他功能

除了 LFS,.gitattributes 还支持:

1. 行尾符处理

bash
# 统一使用 LF 行尾符
*.go text eol=lf
*.md text eol=lf

# Windows 批处理文件使用 CRLF
*.bat text eol=crlf

2. 文本/二进制文件标识

bash
# 强制识别为文本文件
*.log text

# 强制识别为二进制文件
*.pdf binary
*.zip binary

3. 合并策略

bash
# 自动生成的文件使用特定合并策略
package-lock.json merge=ours

4. diff 驱动

bash
# 为特定文件类型配置自定义 diff
*.docx diff=word

5. 过滤器

bash
# 敏感信息过滤
config/secrets.yml filter=remove-secrets

6. 语言检测

bash
# 帮助 GitHub 正确识别编程语言
*.proto linguist-language=Protocol-Buffer

常见使用场景

  1. 多平台开发: 统一行尾符处理
  2. 大文件管理: LFS 跟踪
  3. 自动生成文件: 排除语言统计
  4. 敏感文件: 特殊处理策略
  5. 二进制文件: 避免文本处理

🔍 验证配置

检查跟踪文件

bash
git lfs track

查看 LFS 文件状态

bash
git lfs ls-files

检查存储使用量

bash
git lfs fsck

🚨 常见问题排查

1. 认证问题

bash
Error downloading object: batch request: fatal: Authentication failed

解决方案:

  • 确认 GitHub 凭据配置正确
  • 使用 Personal Access Token
  • 检查网络连接

2. 存储配额限制

解决方案:

  • 检查 GitHub LFS 使用量
  • 清理不需要的 LFS 文件
  • 考虑升级存储计划

3. 大文件未被跟踪

解决方案:

  • 检查 .gitattributes 配置
  • 重新添加文件:git add file.png

🎯 最佳实践

1. 成本控制

  • 定期审查 LFS 文件的必要性
  • 避免频繁提交大文件的小修改
  • 考虑使用外部存储服务(如 CDN)

2. 性能优化

bash
# 仅下载当前分支的 LFS 文件
git clone --filter=blob:none --no-checkout <url>
git checkout

# 部分检出 LFS 文件
git lfs pull --include="docs/images/*"

3. 团队协作

  • 确保团队成员了解 LFS 工作流程
  • 建立大文件管理规范
  • 定期清理不需要的 LFS 文件

🔗 参考资源


最后更新: 2025年6月

基于 MIT 许可证发布