Git LFS(Git Large File Storage)是由 GitHub 开发的一款 Git 扩展工具,旨在帮助开发者更高效地管理仓库中的大文件。传统 Git 会将文件的每个版本完整存储在仓库历史中,导致大文件快速膨胀仓库体积,当网络条件不富裕的时候会严重影响克隆和推送效率。Git LFS 通过以下机制解决这一问题:
yum install git-lfs
git lfs install
git lfs track "*.mp4" # 跟踪所有 MP4 文件git lfs track "data/*" # 跟踪 data 目录下的所有文件
此操作会生成.gitattributes文件并自动提交,记录跟踪规则。git add video.mp4git commit -m "添加视频文件"git push origin main推送时,大文件会上传至 LFS 服务器,代码仓库仅包含指针。
git add video.mp4
git commit -m "添加视频文件"
git push origin main
git clone时,LFS 文件会自动下载:
git clone https://example.com/repo.git
若只需代码而不下载大文件,可使用:git lfs clone --skip-smudge https://example.com/repo.git
后续按需下载指定文件:bashgit lfs pull --include="video.mp4"
# 在当前目录初始化一个新的 Git 仓库 git init
[root@aa35c8357965 test]# git lfs install
Git LFS initialized.
验证
[root@aa35c8357965 test]# git lfs version
git-lfs/3.6.1 (GitHub; linux loong64; go 1.21.4)
命令行直接跟踪
git lfs track "*.mp4" # 跟踪所有 MP4 文件
git lfs track "data/*" # 跟踪 data 目录下的所有文件
git lfs track "model.h5" # 跟踪特定文件
执行后,Git LFS 会自动创建或更新.gitattributes文件(需提交该文件)。
$ git lfs track "*.zip"
添加、提交和推送文件的操作与普通 Git 流程一致,但大文件会自动上传到 LFS 服务器:
git add .gitattributes # 提交跟踪规则
git add video.mp4 # 添加大文件(实际只提交指针)
git commit -m "添加视频文件"
git push origin main # 推送时,大文件会上传到 LFS 服务器
$ git add .gitattributes
$ ls -al
total 813758
drwxr-xr-x 1 28970 197609 0 Jul 27 10:24 ./
drwxr-xr-x 1 28970 197609 0 Jul 27 09:55 ../
drwxr-xr-x 1 28970 197609 0 Jul 27 10:27 .git/
-rw-r--r-- 1 28970 197609 43 Jul 27 10:24 .gitattributes
-rw-r--r-- 1 28970 197609 833276817 Jul 16 22:16 MDK528.zip
-rw-r--r-- 1 28970 197609 39 Jul 27 09:45 README.md
$ git add MDK528.zip
$ git commit -m "Firstly,commit a big MDK_Setup_package."
$ git push origin main