文章总结: 本文详细介绍GitLFS操作流程与原理。通过将二进制文件存储在远程并用本地指针替代,GitLFS可避免仓库体积过大并提升速度。内容涵盖初始化、文件跟踪、按需下载及历史迁移等步骤,强调迁移会重写历史,适用于管理含音视频等大文件的项目。 综合评分: 90 文章分类: 其他
Git LFS 操作流程
原创
hyang0 hyang0
生有可恋
2026年1月26日 06:59 中国香港
Git LFS(Large File Storage)是 Git 的一个扩展,用于二进制文件(如音频、视频、数据集、图形等)的版本控制。它通过将二进制文件存储在远程服务器上,并在本地仓库中用指针文件代替,从而避免仓库体积过大,提高克隆和拉取的速度。
Git 的 man 文档中对 git lfs 的操作介绍比较少:
第一次使用 git lfs 可能摸不着头脑,首先还是要把原理搞懂。Git LFS 的工作原理图如下:
它的服务的部分都在服务器上,需要 git 服务器支持 LFS,一般 gitlab 等正式 git 服务器支持 LFS。与正常的仓库文件不同,二进制文件是单独管理的,可以集中进行版本管理减少服务端的存储开销。
Git LFS 的工作原理:文件存储在统一的 LFS 服务器上,在下载时可以只下载文件指针,当有需要时再下载所需的实际文件。
比如:
export GIT_LFS_SKIP_SMUDGE=1git clone ssh://[email protected]:222/hyang0/my-soft-repo.git
下载下来的 git repo 中只包含文件指针(大小只有1K),不含实际文件:
当有需要时再下载对应文件:
git lfs fetch --include='Trae-Setup-x64.exe'git lfs checkout Trae-Setup-x64.exe
使用 git lfs 可以节约大量带宽,特别是 git 仓库中有大量二进制文件时。Git LFS 的文件操作流程如下:
初始化
git lfs install # 只需运行一次,初始化 LFS 配置
跟踪指定文件
# 示例:跟踪所有 .psd 文件和 data/ 目录下的 zip 文件git lfs track "*.psd"git lfs track "data/*.zip"
# 自动生成 .gitattributes 文件(需提交该文件!)git add .gitattributes
正常 git commit
git add large_file.psd # LFS 自动接管大文件git commit -m "Add design file"git push origin main # 大文件上传至 LFS 服务器
克隆仓库
git clone <repo-url> # 默认仅下载指针文件git lfs pull # 下载所需的大文件
在 gitlab 的 lfs 仓库中可以看到 git lfs 属性:
如果想将一个普通仓库转为 git lfs 仓库,可以使用 git lfs migrate import 迁移,迁移会重写 git 仓库历史(须慎重)。
# 进入仓库目录cd my-repo
# 迁移所有历史中的 .zip 文件到 LFSgit lfs migrate import --include="*.zip" --everything
# 强制推送(会重写历史,确保团队协作时谨慎使用)git push --force
一般我们不会手动搭建 git lfs 服务端,git lfs 服务端需要提供 git lfs API 服务,并配合适当的认证。
git lfs server 示例:
https://github.com/l3iggs/docker-lfs-test-server
全文完。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:生有可恋 hyang0 hyang0《Git LFS 操作流程》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论