0%

git基础操作-大文件管理LFS

a diagram showing how Git LFS works

Git LFS(Large File Storage)是一种Git扩展,用于处理大文件存储问题。它允许Git仓库内更有效地管理和追踪大文件,如图像、音频、视频和数据集等,而无需在仓库中储存这些庞大的二进制文件。Git LFS通过代替大文件存储指针,将这些大文件存放在单独的服务器上。当克隆或检出特定版本时,Git LFS将自动下载替换对应的大文件。

传统的Git处理方式主要针对源代码和小型文件。当在仓库中保存大文件并提交许多变更时,可能影响克隆、拉取和推送操作的性能。Git LFS解决了这个问题,使在不影响操作性能的情况下存储和跟踪大文件。

使用Git LFS的主要优点包括:

  1. 性能改善:通过分离大文件和源代码管理,降低仓库克隆和拉取等操作处理时间。
  2. 有效存储:减少由于频繁存储大文件变化带来的仓库空间消耗。
  3. 简化工作流程:无需修改您使用Git的方式,只需一次简单的设置,即可自动处理大文件。

下载安装LFS

既然是扩展,要使用LFS就需要先下载安装,可以参考https://github.com/git-lfs/git-lfs/releases

mac

1
2
brew install git-lfs  # 安装lfs
git lfs install #git初始化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
2
git add -u
git commit -m "add some large files"

推流

lfs的推流和git的普通推流貌似是独立的,我建议先推lfs再推普通的push

1
2
git lfs push #推大文件
git push #普通推流