如果我们用git管理的项目中出现了一些大文件, 同时若其数量比较多, 而且更新又比较频繁, 那么当首次clone该项目时, 就会不可避免地将这些大文件的当前版本和历史所有版本的文件都下载下来, 虽然你很可能用不到这些历史文件, 但是却不得不为它们所占用的额外空间买单.

git lfs(large file storage)就很好地解决了这一问题. 通过将大文件替换为小指针的方式, 当你真正需要到这些大文件的时候, 它才会从本地或者远端的lfs缓存中下载这些大文件.

git lfs拥有本地lfs缓存和远端的lfs存储仓库.

当你add一个文件时, git lfs用一个指针替换了其中的内容, 并将文件存储在本地的git lfs缓存中

当你push一个文件时, 除过普通的文件会被正常push, 这些lfs文件也会被从本地lfs缓存传输到远端lfs存储仓库

当你checkout一个包含lfs 指针的提交的时候, 那么指针文件就将被本地lfs缓存中的备份, 或者lfs存储库中的备份替换

该指针当然也是一个文件, 内容如

version https://git-lfs.github.com/spec/v1
oid sha256:5b62e134d2478ae0bbded57f6be8f048d8d916cb876f0656a8a6d1363716d999
size 285

里面的第一行是一个指针文件规范URL, 第二行是对象id, 第三行是文件有多少字节.

如何下载git lfs

可以通过网站 https://git-lfs.github.com/ 下载tar包, 比如git-lfs-linux-amd64-v2.9.0.tar.gz, 解压后运行

chmod 755 install.sh
sudo ./install.sh
git lfs install

如何在项目中使用git lfs

你可以使用普通的git clone命令来clone项目, 如果该项目中含有lfs文件, git会在clone的结尾帮你监测出所有的git lfs文件. 当然你也可以用git lfs clone来加速, 并且git会等到checkout完成后在批量下载所有需要的lfs文件. 这可以显著减少http请求和进程的数量.

同样git pull命令也是可以正常使用, 如果lfs文件有丢失, 那么可以通过git lfs pull来下载当前丢失的lfs文件内容.

可以使用git lfs track指令来指定追踪指定的文件为lfs文件, 指定方式与.gitignore方式相同, 支持对单个或者通配的多个文件指定. 对于使用通配符指定时, 需要加上"", 比如git lfs track "*.so", 否则该通配符会被shell扩展. 使用untrack可以取消对某文件的追踪. 追踪的文件名单在.gitattributes中可以找到. git lfs ls-files 可以查看所有的lfs文件, git lfs status可以查看当前add的lfs文件

同样地, git push就可以提交并推送lfs内容到远端仓库.

git lfs原理和使用相关推荐

  1. Git 存储原理及相关实现

    Git 是目前最流行的版本控制系统,从本地开发到生产部署,我们每天都在使用 Git 进行我们的版本控制,除了日常使用的命令之外,如果想要对 Git 有更深一步的了解,那么研究下 Git 的底层存储原理 ...

  2. Git LFS 入门指南

    Git LFS 入门指南 出于好意:设计团队开始把他们大尺寸的图形文件添加到你的项目仓库当中,然而引起的结果是,你看着仓库不断增大直到数 GB 大小...... 在 GIT 中以二进制文件来运行确实是 ...

  3. Git LFS笔记(文档、博客、issue摘录)

    Git LFS 文章目录 Git LFS 1. What is Git LFS? 1.1 Creating a new Git LFS repository 1.2 Cloning an existi ...

  4. git lfs安装及使用方法

    什么是git LFS LFS是Large File Storage的缩写,用了帮助git管理大的文件 原理:不同于git每次保存diff,对于git来说,如果是模型或者一些设计大文件,改变一点,对于仓 ...

  5. Git详解之九 Git内部原理

    以下内容转载自:http://www.open-open.com/lib/view/open1328070620202.html Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各 ...

  6. Git命令家底儿及Git数据通信原理详解

    声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载. 作者:周立伟(花名:华序,ITeye博客),关注分布式.高并发和Java中间件的研究. 责编:钱曙光,关注架构和算法领域,寻求报道或者 ...

  7. eclipse查看git地址_Git大文件管理:函数计算和OSS支持的Git LFS服务器

    此服务器支持Batch API和File Locking API.项目地址与文档: https://github.com/zhxxch/git-lfs-one/​github.com LFS 是个好东 ...

  8. Git内部原理之深入解析Git的引用和包文件

    一.Git 分支本质 如果对仓库中从一个提交(比如 1a410e)开始往前的历史感兴趣,那么可以运行 git log 1a410e 这样的命令来显示历史,不过需要记得 1a410e 是查看历史的起点提 ...

  9. git lfs出现This repository is over its data quota

    报错如下: batch response: This repository is over its data quota. Account responsible for LFS bandwidth ...

最新文章

  1. 一晚上就能让你小腹变小的方法 - 健康程序员,至尚生活!
  2. CS-APP:Section 5.1,Memory aliasing :看上去逻辑一样,执行结果一样吗?
  3. 软件Trimmomatic
  4. eclipse显示服务器地址,eclipse怎样添加服务器地址
  5. 过程作为黑箱抽象——《计算机程序的构造和解释》
  6. 高级数据结构与算法 | LFU缓存机制(Least Frequently Used)
  7. 矩阵论及其应用_群表示论笔记(一)
  8. 拼多多一出手,苹果AirPods Pro才发布一天就降价了
  9. 关于【AC自动姬】的学习
  10. C++string字符串1.2
  11. java spring log4j_配置spring的log4j日志记录
  12. php 导出vcard,将Android的contacts2.db导出成vcard联系人的方法
  13. linux opengl安装教程,Linux下OpenGL的安装与cmake编译OpenGL程序
  14. 异常来自 HRESULT:0x80070057 (E_INVALIDARG)
  15. 电脑无规律无响应,鼠标能动但是点击无反应一直在转圈。
  16. 【教程】CRX格式插件不能离线安装?本地扩展CRX无法安装怎么办?
  17. MySQL查询(DQL)之基础查询+条件查询+排序查询
  18. 快速下载“阿里云镜像网站“Centos各个版本 全流程
  19. SpringBoot OSS实战之用户头像上传
  20. 在数据库插入大量不同数据

热门文章

  1. 谷歌浏览器不能同步功能,chrome不能登录解决办法
  2. 2023ACP世界大赛教育者论坛:让职业教育直面AI机遇与挑战
  3. AutoSAR Adaptive platform 初探
  4. AFL++: Combining Incremental Steps of Fuzzing Research 翻译
  5. word能保存html文件,Word可以保存为网页文件 教你来回转 Word转成网页,网页转Word...
  6. Propensity score简介
  7. 红猫linux系统下载教程,RedCat_NSS_红猫linux软路由安装使用手册.doc
  8. 应急管理场景中的手机信令数据应用探索
  9. autoware的icp_maching解读
  10. 利用nessus工具扫描主机