是啥
代码托管支持 Git LFS(Large File Storage,大文件存储)协议,可以把音乐、图片、视频等指定的任意大文件资源存储在Git仓库之外,对于使用者而言,类似在操作一个完整的Git仓库,非常方便。通过将大文件存储在Git原有的数据结构之中,可以减小Git仓库本身的体积,使克隆Git仓库的速度加快,也使得Git不会因为仓库中充满大文件而损失性能。
为什么要用 git lfs
- 项目保存静态资源,项目总体积过大
- 存在过大的单个文件(大于100M)
mac 安装
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew install git-lfs
$ git lfs install
centos 安装
$ curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | sudo bash
$ sudo yum install git-lfs
$ git lfs install
初始化项目
由于 github 放弃使用本地密码登录了,所以最好还是github上新建一个项目,然后 clone 下来。不然很难搞。
git clone @git.....
初始化 lfs
它会更新 git hooks,用来支持 lfs。
git lfs install
添加要处理的文件类型
git lfs track "*.mp4"
git add .gitattributes
这里要注意,每次使用了 git lfs track 之后,都要把 .gitattributes 给 add 到暂存区(不用 commit),这样这种新加入的类型才会生效。
还有,执行 git lfs track 的时候,会根据当前目录生成,也就是说在 /my-project/src/ 下执行 git lfs track ".mp4",生成的配置会是 /src/.mp4,而不是在全局生效的 /*.mp4,而且 src 文件夹下也会生成一个新的 .gitattributes 文件。
所以如果想统一整理,记得回到项目根目录再执行 git lfs track "*.mp4"
查看当前的 lfs 能处理的文件类型
git lfs track
添加要处理的文件
在经过上面添加类型以及 .gitattributes 之后,正常的 add 和 commit 就行了。
git add *.mp4
git commit -m "feat: init lfs and save mp4 files"
add 之后查看被 lfs 处理的文件
git lfs status
push 的时候的效果
git push
查看已跟踪的文件列表
git lfs ls-files
克隆包含 Git LFS 文件的远程仓库
git lfs clone <URL>