Git LFS相当于Git的一种插件式增强工具,简单讲,它是在Git仓库使用这些文件的 指针代替 实际文件,而把实际文件存储在远程端LFS服务器,同时在本地仓库中实时追踪这些文件的变动
原理
Git LFS是基于Git的 .gitattributs 配置文件的特性,用 smudge
过滤器基于 指针文件寻找大文件内容, 用 clean
过滤器在对大文件改动时,创建指针文件的新版本。同时还用 pre-push
钩子将大文件上传到Git LFS服务器, 即在 git-push
时, 如果提交中包含被LFS跟踪的大文件,pre-push
钩子会检测到,并执行上传Git LFS服务器的动作。
因此,如果一个仓库中包含LFS内容,但是在推送时不想推送这类文件,只要加上 --no-verify
选项就行,即:
$ git push --no-verify
--no-verify
选项告诉 git push
完全跳过 pre-push
钩子。
前面提到被LFS管理的文件,本地仓库中保存的内容实际上是指针文件,其格式类似于下面这样:
$ git show HEAD:2.svg
version https://git-lfs.github.com/spec/v1
oid sha256:158213f90f8b27012034c6f58db63e1861b12aa122d98910de311bf1cb1e50a0
size 14651
(END)
version
表示LFS的版本
oid
表示文件对象的唯一hash值
size
表示文件的大小
安装
1.下载
在https://github.com/git-lfs/git-lfs/releases/找到Asserts,Ubuntu选择 AMD64
2.解压
tar -zxvf 文件名.tar.gz
3.修改
直接运行bash install.sh会报错,提示需要sudo权限。此时,我们只需要用文本编辑器打开install.sh,将prefix后面的路径修改为自定义路径,保存后再bash即可完美运行
4.加入环境变量
cd ~
vim .bashrc
在bashrc中加入
export PATH="你安装的路径/git-lfs/bin:$PATH"
退出并保存,刷新
source .bashrc
成功!
5.测试
git lfs
不报错即成功