Git LFS(Large File Storage)是一种Git扩展,用于处理大文件存储问题。它允许Git仓库内更有效地管理和追踪大文件,如图像、音频、视频和数据集等,而无需在仓库中储存这些庞大的二进制文件。Git LFS通过代替大文件存储指针,将这些大文件存放在单独的服务器上。当克隆或检出特定版本时,Git LFS将自动下载替换对应的大文件。
传统的Git处理方式主要针对源代码和小型文件。当在仓库中保存大文件并提交许多变更时,可能影响克隆、拉取和推送操作的性能。Git LFS解决了这个问题,使在不影响操作性能的情况下存储和跟踪大文件。
使用Git LFS的主要优点包括:
- 性能改善:通过分离大文件和源代码管理,降低仓库克隆和拉取等操作处理时间。
- 有效存储:减少由于频繁存储大文件变化带来的仓库空间消耗。
- 简化工作流程:无需修改您使用Git的方式,只需一次简单的设置,即可自动处理大文件。
下载安装LFS
既然是扩展,要使用LFS就需要先下载安装,可以参考https://github.com/git-lfs/git-lfs/releases
mac
1 | brew install git-lfs # 安装lfs |
LFS使用
LFS托管大文件可以分为3步:
- 追踪:lfs track "*.png"
- 添加、提交:git add ; git commit
- 推流:git lfs push; git push
- 拉取: git lfs pull ; git pull
拉取
如果没有远程仓库或者远程仓库没有lfs则可以忽略一步,首先进行正常拉取
1 | git pull |
这一步也会拉取的仓库中也会有大文件,但只是空壳,它们实质是指向其 LFS 存储对象的文件指针,要下载可用的大文件还需要
1 | git lfs pull |
追踪
一定要先track再add、commit,一定要先track再add、commit,一定要先track再add、commit
1 | lfs track "*.png" |
假如不小心在lfs_track之前已经
git add过了,可以通过git rm --cached在暂存区删除这些文件(不会真的在工作区删除这些文件)
检查已经track的文件列表
1 | git lfs ls-files |
添加
就正常的添加和提交即可
1 | git add -u |
推流
lfs的推流和git的普通推流貌似是独立的,我建议先推lfs再推普通的push
1 | git lfs push #推大文件 |