当前位置: 首页 > news >正文

【Git】LFS

什么是lfs

Git 是分布式 版本控制系统,这意味着在克隆过程中会将仓库的整个历史记录传输到客户端。对于包涵大文件(尤其是经常被修改的大文件)的项目,初始克隆需要大量时间,因为客户端会下载每个文件的每个版本**。Git LFS(Large File Storage)是由 Atlassian, GitHub 以及其他开源贡献者开发的 Git 扩展,它通过延迟地(lazily)下载大文件的相关版本来减少大文件在仓库中的影响**,具体来说,大文件是在 checkout 的过程中下载的,而不是 clone 或 fetch 过程中下载的(这意味着你在后台定时 fetch 远端仓库内容到本地时,并不会下载大文件内容,而是在你 checkout 到工作区的时候才会真正去下载大文件的内容)。

lfs实现原理

Git LFS 通过将仓库中的大文件替换为微小的指针(pointer) 文件来做到这一点。在正常使用期间,你将永远不会看到这些指针文件,因为它们是由 Git LFS 自动处理的:

  1. 当你添加(执行 git add 命令)一个文件到你的仓库时,Git LFS 用一个指针替换其内容,并将文件内容存储在本地 Git LFS 缓存中(本地 Git LFS 缓存位于仓库的.git/lfs/objects 目录中)。

  2. 当你推送新的提交到服务器时,新推送的提交引用的所有 Git LFS 文件都会从本地 Git LFS 缓存传输到绑定到 Git 仓库的远程 Git LFS 存储(即 LFS 文件内容会直接从本地 Git LFS 缓存传输到远程 Git LFS 存储服务器)。

  3. 当你 checkout 一个包含 Git LFS 指针的提交时,指针文件将替换为本地 Git LFS 缓存中的文件,或者从远端 Git LFS 存储区下载。

LFS 文件的指针文件内容

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

参考文章

  1. 详解 Git 大文件存储(Git LFS)
http://www.lryc.cn/news/389205.html

相关文章:

  • 隐式转换的魔法:Scala中隐式转换的深度解析
  • 外贸企业选择什么网络?
  • Redis 7.x 系列【14】数据类型之流(Stream)
  • (四)opengl函数加载和错误处理
  • RuoYi-Vue3不启动后端服务如何登陆?
  • Typora(跨平台 Markdown 编辑器 )正版值得购买吗
  • springboot个人证书管理系统-计算机毕业设计源码16679
  • 读-改-写操作
  • 海外仓系统应用教程:解决了小型海外仓哪些问题
  • shell 脚本编程
  • gin参数验证
  • 【web3】分享一个web入门学习平台-HackQuest
  • Sectigo或RapidSSL DV通配符SSL证书哪个性价比更高?
  • 金蝶云星空字段之间连续触发值更新
  • Python 获取字典中的值(八种方法)
  • Day49
  • OpenCV 车牌检测
  • 机器学习/pytorch笔记:time2vec
  • 降低开关电源噪声的设计总结
  • rust嵌入式开发2024
  • 字符串
  • mysql8 锁表与解锁
  • 第2篇 区块链的历史和发展:从比特币到以太坊
  • 从理论到实践的指南:企业如何建立有效的EHS管理体系?
  • 内网和外网的区别及应用
  • 电驱失效类型和风险分析,如何用精益思维提升电驱可靠性?
  • 自动扫描范围在减少剂量多相CT肝脏成像中的应用:基于CNN和高斯模型| 文献速递-深度学习自动化疾病检查
  • 【机器学习】基于层次的聚类方法:理论与实践
  • C# 验证PDF数字签名的有效性
  • 2小时动手学习扩散模型(pytorch版)【入门版】【代码讲解】