一、Git LFS的应用场景及其运行机制简介
1.1 Git LFS应用场景
Git LFS(Large File Storage,大型文件存储)是Git扩展,可以管理Github项目中的大文件的下载流程。Git LFS的应用场景非常广泛,这里仅列举出我实际遇到的两个简单场景:
- (1)在进行机器学习或深度学习时,总是遇到模型太大,以至于GitHub仓库容纳不了。
- (2)训练数据集数量非常多,GitHub仓库只能存储部分数据集,比如下图所示,
microsoft/AEC-Challenge 仓库中其中一个数据集中的.wav 文件实际有9000条,而实际只能在GitHub仓库中只能显示1000条。
? 另外,如果我们不在系统中安装Git LFS情况下,在克隆像上面这种存储大量数据集的microsoft/AEC-Challenge 仓库时,虽然能能够正常拷贝项目中的全部文件,但是,克隆到本地的echo_fileid_0.wav 文件却是空文件,在读取.wav 文件时会出现BUG。
1.2 Git LFS运行机制简介
由于客户端使用Git进行项目管理时候,会下载仓库中每个文件版本,所以对于包含大文件且经常修改这些大文件的项目,在使用Git初始克隆都需要大量的时间。此时,Git LFS就起到作用了,Git LFS(Large File Storage)通过延迟地下载大文件的相关版本来减少大文件在仓库中的影响。
具体来说,大文件只会在checkout 过程中才进行下载,而不在clone 或fetch 过程中执行下载任务。Git LFS的详细运行机制可以参考Git LFS官方文档。
二、Git LFS的安装
- 在Ubuntu22.04系统中添加GIT LFS第三方软件安装源
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
执行结果如下图所示:
如下图所示,在/etc/apt/sources.list.d/ 目录下就多了github_git-lfs.list 文件:
github_git-lfs.list 文件中的内容如下图所示:
sudo apt isntall git-lfs
安装结果如下图所示,
git lfs env
出现如下图红框中的内容则表示真正安装成功:
此时,我就解决一开始为什么下载的.wav 文件为空文件的问题了,虽然还是正常git clone Github上包含大文件的仓库 ,与单纯的Git 工具不同的是:
- 如下图所示,在使用
git clone Github上的仓库时会出现过滤内容这一项 ,这个过程就是在下载项目仓库中的大文件:
- 由于安装了
Git LFS ,所有在克隆Github上的仓库时,在项目的.git 中自动创建了与Git LFS 相关的lfs/objects 和lfs/tmp 文件,这些文件中缓存了大文件:
|