前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git 大文件存储 lfs

Git 大文件存储 lfs

作者头像
为为为什么
发布2022-08-09 17:02:48
2K0
发布2022-08-09 17:02:48
举报
文章被收录于专栏:又见苍岚

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 系统
代码语言:javascript
复制
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs

git lfs install

Mac OS 系统
代码语言:javascript
复制
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git-lfs
git lfs install

用法

  1. 查看现有的文件追踪模式:
代码语言:javascript
复制
git lfs track

  1. 添加要管理的大文件的文件类型,比如gz文件
代码语言:javascript
复制
git lfs track *.gz

添加类型后,查看管理文件.gitattributes,可以发现.gitattributes中新增加一行:

代码语言:javascript
复制
*.gz filter=lfs diff=lfs merge=lfs -text

  1. 将管理文件.gitattributes提交至仓库. 它保存了文件的追踪记录
  2. 获取git lfs管理的所有文件列表:
代码语言:javascript
复制
git lfs ls-files

  1. 通过 git show 可以查看 lfs 文件
代码语言:javascript
复制
git show HEAD:Memory/noise.jpg
version https://git-lfs.github.com/spec/v1
oid sha256:7e7434bc0bc5450d8499733547b6fe1d3be016cdbe3f8341b882d00d8627f7e4
size 1094790

  1. 添加大文件到git仓库,和其它添加方式一样
代码语言:javascript
复制
git add my.gz
git commit -m "add gz file"
git push

  1. 将代码 push 到远程仓库后,LFS 跟踪的文件会以『Git LFS』的形式显示
代码语言:javascript
复制
$ 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

  1. clone 时 使用git clone’或 git lfs clone均可
  2. 查看Git LFS 的帮助:
代码语言:javascript
复制
git lfs help

: Git version > 1.8.5 如未安装LFS,拉取到本地LFS文件将是约1K的ASCII text文本文件(但通过du -sh查看目前的大小此目录依旧很大,那是因为.git/objects 目录存的git log文件占用)。

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • LFS 安装
    • Windows 系统
      • Linux 系统
        • Mac OS 系统
        • 用法
        • 参考资料
        相关产品与服务
        文件存储
        文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档