Git LFS命令速查手册:从入门到精通的25个核心指令
一、基础操作:开启大文件版本控制之旅
1. git lfs install - 初始化Git LFS环境
功能:将Git LFS集成到Git工作流中,配置必要的钩子(Hooks)和过滤器
示例:
git lfs install
执行效果:
- 安装Git钩子(pre-push、post-checkout等)
- 配置Git属性过滤器处理LFS指针文件
- 显示"Git LFS initialized"确认成功
2. git lfs track - 追踪大文件类型
功能:指定需要通过LFS管理的文件模式,写入.gitattributes
核心参数:
-l, --lockable:启用文件锁定功能--dry-run:预览变更不实际修改.gitattributes
示例:
# 追踪所有.psd文件
git lfs track "*.psd"
# 追踪设计资源并启用锁定
git lfs track --lockable "design/*.fig"
工作原理:
向.gitattributes添加过滤规则:
*.psd filter=lfs diff=lfs merge=lfs -text
design/*.fig filter=lfs diff=lfs merge=lfs lockable -text
3. git lfs untrack - 取消文件追踪
功能:从.gitattributes移除LFS追踪规则
示例:
git lfs untrack "*.zip"
注意:仅移除追踪规则,已提交的LFS对象仍保留在仓库历史中
4. git lfs track(无参数)- 查看追踪状态
功能:列出当前所有LFS追踪规则
示例:
git lfs track
输出示例:
Listing tracked patterns
*.psd (.gitattributes)
design/*.fig [lockable] (.gitattributes)
二、核心工作流:文件的生命周期管理
5. git add + git commit - 提交LFS文件
功能:通过标准Git命令提交LFS文件(自动转换为指针)
示例:
git add large-file.psd
git commit -m "Add design assets"
内部转换:
实际提交的是1KB左右的指针文件:
version https://git-lfs.github.com/spec/v1
oid sha256:4e9a8c2e5f2c7c3a6d6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d
size 12345678
6. git lfs push - 推送LFS对象到远程
功能:将本地LFS文件推送到远程存储
核心参数:
--dry-run:模拟推送不实际传输--object-id <oid>:直接推送指定OID的对象
示例:
# 推送当前分支关联的LFS对象
git lfs push origin main
# 推送特定OID的对象
git lfs push --object-id origin 4e9a8c2e5f2c7c3a6d6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d
7. git lfs fetch - 获取远程LFS对象
功能:下载远程仓库的LFS对象到本地缓存
核心参数:
--all:获取所有分支的LFS对象--recent:仅获取最近引用的对象(默认7天)--include/--exclude:按路径过滤获取内容
示例:
# 获取当前分支缺失的LFS对象
git lfs fetch
# 获取所有历史版本的LFS对象(谨慎使用)
git lfs fetch --all
8. git lfs pull - 拉取并检出LFS文件
功能:组合git fetch和git checkout,获取并替换工作区指针文件
示例:
git lfs pull origin feature/large-assets
与普通git pull的区别:
自动处理LFS对象的下载和文件替换,确保工作区显示实际文件内容
9. git lfs checkout - 检出LFS文件
功能:将缓存中的LFS对象替换工作区的指针文件
冲突解决参数:
--ours/--theirs:合并冲突时选择本地/远程版本--to <path>:将冲突文件检出到指定路径
示例:
# 检出当前分支的所有LFS文件
git lfs checkout
# 解决冲突时选择我们的版本
git lfs checkout --ours large-file.vhd
三、高级管理:缓存、空间与冲突处理
10. git lfs ls-files - 列出工作区LFS文件
功能:显示当前工作区中受LFS管理的文件及其OID
示例:
git lfs ls-files
输出格式:
4e9a8c2e5f * design/main.psd
7b3d5f7a9c * videos/intro.mp4
(OID前缀 + 文件名,*表示已缓存本地)
11. git lfs prune - 清理本地缓存
功能:删除不再被引用的LFS对象,释放磁盘空间
安全参数:
--dry-run:预览将删除的对象--recent:保留最近N天的对象(默认7天)
示例:
# 预览清理效果
git lfs prune --dry-run
# 保留30天内的对象并清理旧缓存
git lfs prune --recent=30
12. git lfs status - 检查LFS文件状态
功能:显示LFS文件的修改状态(已修改/待推送/待拉取)
示例:
git lfs status
状态说明:
LFS file modified:本地已修改LFS file to push:已提交待推送LFS file to pull:远程有更新
13. git lfs dedup - 重复对象去重
功能:通过硬链接合并重复的LFS对象,节省磁盘空间
示例:
git lfs dedup
执行逻辑:
扫描.git/lfs/objects目录,对相同OID的文件创建硬链接
四、协作保障:文件锁定机制
14. git lfs lock - 锁定文件防止冲突
功能:标记文件为"锁定中",阻止其他协作者修改
参数:
-r <remote>:指定远程仓库--json:输出JSON格式锁定信息
示例:
# 锁定关键设计文件
git lfs lock design/main.ai
# 指定远程锁定
git lfs lock --remote origin assets/logo.svg
15. git lfs unlock - 释放文件锁定
功能:解除文件锁定,允许其他用户编辑
强制解锁:
使用-f, --force可强制解除他人锁定(需服务器权限)
示例:
# 解锁自己锁定的文件
git lfs unlock design/main.ai
# 管理员强制解锁
git lfs unlock -f emergency-fix.psd
16. git lfs locks - 查看锁定状态
功能:列出仓库中所有当前锁定及持有者
筛选参数:
--local:仅显示本地锁定--json:机器可读格式输出
示例:
# 查看所有锁定
git lfs locks
# 查找特定文件的锁定
git lfs locks --path "*.ai"
输出示例:
design/main.ai jdoe ID:123
assets/logo.svg msmith ID:124
五、数据迁移:存量仓库的LFS改造
17. git lfs migrate import - 历史仓库迁移
功能:将现有仓库的大文件历史转换为LFS跟踪
核心参数:
--include:指定要迁移的文件模式--everything:处理所有分支和标签--no-rewrite:保留原提交历史(创建新提交)
示例:
# 迁移所有zip文件到LFS
git lfs migrate import --include="*.zip" --everything
注意:
这会重写提交历史,需谨慎使用,建议在独立分支测试
18. git lfs migrate export - 提取LFS对象
功能:将LFS跟踪的文件转换回普通Git文件
适用场景:需要移除LFS管理或将文件迁移到其他存储
示例:
git lfs migrate export --include="*.tar.gz"
19. git lfs clone - 优化大仓库克隆
功能:克隆仓库时并行拉取LFS对象(比git clone+git lfs pull更快)
示例:
git lfs clone https://gitcode.com/gh_mirrors/gi/git-lfs
内部优化:
- 先克隆Git仓库(仅指针文件)
- 再批量拉取LFS对象,支持断点续传
六、问题诊断:排查LFS故障的实用工具
20. git lfs fsck - 验证LFS对象完整性
功能:检查本地缓存的LFS对象是否损坏或缺失
示例:
git lfs fsck
错误类型:
missing object:本地缓存缺失corrupt object:文件损坏(需重新拉取)
21. git lfs logs - 查看LFS操作日志
功能:显示LFS命令执行历史,辅助问题排查
示例:
git lfs logs last
日志内容:包含命令、时间、错误信息和HTTP请求详情
22. git lfs env - 查看环境配置
功能:显示LFS相关的Git配置和环境变量
示例:
git lfs env
关键信息:
- Endpoint URL:LFS服务器地址
- LocalWorkingDir:工作目录
- Git LFS version:客户端版本
七、高级操作:批量处理与脚本集成
23. git lfs pointer - 手动创建/解析指针文件
功能:生成LFS指针文件或从指针提取信息
常用子命令:
create <file>:为文件生成指针--check:验证文件是否为LFS指针
示例:
# 为文件生成指针
git lfs pointer create large.iso > large.iso.lfs
# 解析指针文件获取信息
git lfs pointer --check large.iso.lfs
24. git lfs push --object-id - 推送指定OID对象
功能:直接通过OID推送单个LFS对象(高级脚本用)
示例:
git lfs push --object-id origin 4e9a8c2e5f2c7c3a6d6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d
25. git lfs fetch --include - 选择性拉取
功能:仅拉取指定路径的LFS对象,减少带宽占用
示例:
# 只拉取docs目录的PDF文件
git lfs fetch --include="docs/*.pdf"
八、效率提升:LFS命令速查表
日常操作高频命令
| 任务场景 | 推荐命令 |
|---|---|
| 新项目初始化 | git lfs install && git lfs track "*.bin" |
| 克隆大型仓库 | git lfs clone <url> |
| 清理空间 | git lfs prune --dry-run && git lfs prune |
| 解决LFS冲突 | git lfs checkout --ours <file> |
| 检查锁定状态 | git lfs locks --path "*.psd" |
危险操作防护指南
- 迁移历史:使用
git lfs migrate前必须备份仓库 - 强制解锁:
git lfs unlock -f需通知团队避免工作丢失 - 缓存清理:
git lfs prune前确保所有分支已合并
九、企业级实践:性能与安全优化
配置最佳实践
# 全局配置LFS并行下载数
git config --global lfs.concurrenttransfers 8
# 设置大文件阈值(50MB)
git config --global lfs.bigfilethreshold 50m
# 配置HTTP超时(针对大文件)
git config --global lfs.timetout 3600
监控与审计
定期执行以下命令检查LFS健康状态:
# 检查大文件分布
git lfs ls-files | awk '{print $2}' | xargs du -sh
# 验证远程连接
git lfs env | grep Endpoint
十、问题排查流程图
掌握这些命令,你已具备管理GB级仓库的能力!
建议收藏本文档,关注仓库https://gitcode.com/gh_mirrors/gi/git-lfs获取更新。
遇到复杂问题?试试git lfs support获取官方帮助渠道。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



