本文最后更新于:2024年5月7日 下午
Git LFS(Large File Storage, 大文件存储)是 Github 开发的一个 Git 的扩展,用于实现 Git 对大文件的支持。
简介
Git LFS(Large File Storage, 大文件存储)是 Github 开发的一个 Git 的扩展,用于实现 Git 对大文件的支持。
-
Git LFS可以把音乐、图片、视频等指定的任意文件存在 Git 仓库之外,而在 Git 仓库中用一个占用空间 1KB 不到的文本指针来代替文件的存在。
-
通过把大文件存储在 Git 仓库之外,可以减小 Git 仓库本身的体积,使克隆 Git 仓库的速度加快,也使得 Git 不会因为仓库中充满大文件而损失性能。
-
要使用 Git LFS 只需要经过一次下载安装后,指定需要由 Git LFS 管理的文件即可。
-
git每次保存diff,一些大文件发生变化时,整个仓库就会增加很大的体积,导致clone和pull的数据量大增。对于git lfs来说,在使用git lfs track命令后,git push的时候,git lfs会截取要管理的大文件,并将其传至git lfs的服务器中,从而减小仓库的体积
-
LFS 对目录是不生效的(但在git远程仓库也是提示LFS)
原理:不同于git每次保存diff,对于git来说,如果是模型文件或者一些设计大文件,改变一点,对于仓库来说会增加很大的体积。对于git lfs来说,在使用git lfs track命令后,git push的时候,git lfs会截取要管理的大文件,并将其传至git lfs的服务器中,从而减小git仓库的体积。
注意:安装 Git LFS 需要 Git 的版本不低于 1.8.5
LFS 安装
git 2.+ 版本已经自带 lfs 不需要额外安装,如果需要升级 lfs 事实上建议直接升级 git 的版本,单独升级 lfs 可能会造成版本不匹配的问题
Windows 系统
-
通过https://git-lfs.github.com/下载 Git LFS 安装包。
-
双击安装包,打开安装 git-lfs
-
在命令行中执行 git lfs install(需要确认 git-lfs 命令已经被包含在环境变量中)
Linux 系统
1 |
|
Mac OS 系统
1 |
|
用法
-
查看现有的文件追踪模式:
1
git lfs track
-
添加要管理的大文件的文件类型,比如gz文件
1
git lfs track *.gz
添加类型后,查看管理文件.gitattributes,可以发现.gitattributes中新增加一行:
1
*.gz filter=lfs diff=lfs merge=lfs -text
-
将管理文件.gitattributes提交至仓库. 它保存了文件的追踪记录
-
获取
git lfs
管理的所有文件列表:1
git lfs ls-files
-
通过
git show
可以查看 lfs 文件1
2
3
4git show HEAD:Memory/noise.jpg
version https://git-lfs.github.com/spec/v1
oid sha256:7e7434bc0bc5450d8499733547b6fe1d3be016cdbe3f8341b882d00d8627f7e4
size 1094790 -
添加大文件到git仓库,和其它添加方式一样
1
2
3git add my.gz
git commit -m "add gz file"
git push -
将代码 push 到远程仓库后,LFS 跟踪的文件会以『Git LFS』的形式显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16$ git push
Uploading LFS objects: 0% (0/1), 164 KB | 0 B/s
Uploading LFS objects: 0% (0/1), 426 KB | 0 B/s
Uploading LFS objects: 0% (0/1), 786 KB | 213 KB/s
Uploading LFS objects: 100% (1/1), 1.1 MB | 213 KB/s
Uploading LFS objects: 100% (1/1), 1.1 MB | 213 KB/s, done.
Enumerating objects: 11, done.
Counting objects: 100% (11/11), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (8/8), 846 bytes | 846.00 KiB/s, done.
Total 8 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 1 local object.
To github.com:zywvvd/Python_Practise.git
454ff61..d44e68a master -> master -
clone 时 使用
git clone
’或git lfs clone
均可 -
查看Git LFS 的帮助:
1
git lfs help
注: Git version > 1.8.5 如未安装LFS,拉取到本地LFS文件将是约1K的ASCII text文本文件(但通过du -sh查看目前的大小此目录依旧很大,那是因为.git/objects 目录存的git log文件占用)。
参考资料
文章链接:
https://www.zywvvd.com/notes/tools/git/git-lfs/git-lfs/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付