Git 2.25.0发布,支持部分clone、稀疏checkout
点击上方“方志朋”,选择“设为星标”
回复”666“获取新整理的面试资料
作者 | oschina
来源 | https://www.oschina.net/news/112802/git-2-25-0-released
Git 2.25.0 发布了,项目贡献者 Taylor Blau 介绍了此版本带来的一些特性上的亮点,包括部分克隆(partial clone)与稀疏检出(sparse checkout)。
partial clone,部分克隆
一般来说,Git clone 时副本会复制仓库的所有数据,包括历史记录中每个文件的每个版本,对于非常大的存储库,如果只需要文件的一部分,那会无形中增加网络传输和本地存储的成本。在过去的几个版本中,Git 拥有了执行部分克隆的能力,这意味着它现在可以克隆并使用存储库部分内容而无需拥有所有内容。
目前该特性还处于实验阶段,Gitee 已经初步支持该特性。
具体来讲,部分克隆需要客户端做两件事:它必须能够告诉服务器它只需要存储库中的哪些对象,同时还必须能够不与缺少完整对象集的本地存储库产生冲突。另一方面,服务器则必须能够解释客户端的请求,仅服务于某些对象,并能够生成适当的响应。
这其中必要的逻辑是需要 Git 在收到服务器的响应后能够跳过检出存储库,因为一旦检出,那么它就会发现 clone 的对象不完整,并尝试向服务器请求。实际上这一功能由另一个新特性实现:sparse checkout,稀疏检出。
sparse checkout,稀疏检出
稀疏检出实际上是一个类似于 .gitignore 的文件路径模式匹配列表,告诉 Git 在检出存储库时可以跳过哪些对象,它的工作对象是副本内容,而不像 .gitignore 是索引。
稀疏检出有一个缺点就是很难指定,比如下边是为了跳过检出深度大于等于 2 的文件:
$ git clone --filter=blob:none --no-checkout /your/repository/here repo
$ cd repo
$ cat >.git/info/sparse-checkout <<EOF
/*
!/*
EOF
$ git config core.sparseCheckout 1
$ git checkout .
首先,指定 --filter = blob:none 要求服务器避免向我们发送 blob,随后使用 --no-checkout 告诉 Git 在检出存储库时跳过 /your/repository/here 这部分,但它实际上还要依赖于 .git/info/sparse-checkout
中的模式匹配。
Git 2.25 中,通过引入新的 git sparse-checkout 命令,让这一操作更加简便。以下是与上边相同功能的 demo:
$ git clone --filter=blob:none --sparse /your/repository/here repo
该git sparse-checkout
命令使用户可以尽可能轻松地进行部分克隆和稀疏检出,无需将复杂的.gitignore
模式匹配编写到.git/info/sparse-checkout
,git sparse-checkout
会直接处理。
git sparse-checkout
可以做四件事:设置(set)要检出的路径列表、打印(list)当前列表以及完全启用(enable)或禁用(disable)稀疏检出。
要检出新路径,只需执行以下命令:
$ git sparse-checkout set /path/to/check/out
此外,对于非常大的仓库,稀疏检出模式匹配列表会过于繁杂,Git 现在提供了一种 cone 模式,执行git config core.sparseCheckoutCone
进入该模式,允许的模式匹配集将变得更加严格,可以直接指定是否在给定子目录内检出所有路径或所有文件,而不是通过 .gitignore 模式匹配。
例如,如果在大型存储库中有一个目录 A/B/C,而 C 是平时执行大部分工作的位置,则它可能需要被完全检出,但同时还需要让 A 和 B 检出足够多的内容,以便可以到达 C。在 cone 模式下, git sparse-checkout set A/B/C
可以做到这一点。
关于 Git 2.25 的更新内容,详情查看:
https://lore.kernel.org/git/xmqqtv4zjgv5.fsf@gitster-ct.c.googlers.com
https://github.blog/2020-01-13-highlights-from-git-2-25
热门内容:
为什么微服务一定要有网关?
那些在一个公司死磕了5-10年的人,最后都怎么样了?
全面了解 Nginx 主要应用场景
大批 IDEA 激活码到期之后的乱象...
Github 标星 11.5K!这可能是最好的 Java 博客系统
Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解+完整代码)
互联网公司的中年人都去哪了?
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡
Git 2.25.0发布,支持部分clone、稀疏checkout相关推荐
- Git 2.25.0 发布,新特性:部分 clone 与稀疏 checkout
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | oschina 来源 | https://ww ...
- 微信可直接转账到 QQ;小米联合中国联通推出当前最便宜 5G 套餐;Git 2.25.0 发布 | 极客头条...
整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...
- 1月15日科技资讯|微信可直接转账到 QQ;小米联合中国联通推出当前最便宜 5G 套餐;Git 2.25.0 发布
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧.扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Sty ...
- await原理 js_「速围」Node.js V14.3.0 发布支持顶级 Await 和 REPL 增强功能
本周,Nodejs v14.3.0 发布.这个版本包括添加顶级 Await.REPL 增强等功能. REPL 增强 通过自动补全改进对 REPL 的预览支持,例如,下图中当输入 process.ver ...
- JumpServer 堡垒机 v2.25.0 发布
导读 近日,JumpServer 开源堡垒机正式发布 v2.25.0 版本.在这一版本中,用户登录支持 OAuth2.0 协议认证方式,管理员配置 OAuth2 相关的认证信息,用户在登录时即可通过 ...
- 视频处理软件BB FlashBack v5.25.0发布,修复和改进部分功能
BB FlashBack是一种屏幕记录器,能快速容易地创建视频.有详尽的软件阐述.屏幕演示.介绍.指南以及练习.目前BB FlashBack在线订购享75折优惠活动正在进行中,欢迎您下载.购买进行运用 ...
- Sharding-JDBC 1.3.0发布——支持读写分离
当当的分布式数据库中间层Sharding-JDBC正式开源.经过近半年的潜心打磨,Sharding-JDBC于六一前夕正式发布1.3.0里程碑版本. Sharding-JDBC源于当当应用框架ddfr ...
- nginx 稳定版 1.16.0 发布 支持动态加载SSL证书
Nginx(发音同 engine x)是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行,可以在 UNIX.GNU/Lin ...
- AgileConfig 1.6.0 发布 - 支持服务注册与发现
大家好,好久没有输出博文了,一是因为比较忙,另外一个原因是最近主要的精力是在给 AgileConfig 添加一个新的功能:服务注册与发现. 先说说为什么会添加这个功能.我自己的项目是用 Consul ...
最新文章
- Eigen::Matrix
- TCP/IP协议中常用端口表
- mongodb 导出 带条件_将 MongoDB 导出成 csv
- Java开发前景好,3大从业方向供你选择
- ViewResolvers
- bme280 环境传感器开发板_半导体所在柔性湿度传感器与非接触控制方面取得进展...
- v-for key的作用
- 专访Virtu创始人Doug Cifu:找到你做得最好的那件事,反复做!
- Spring框架——day04参数校验和文件上传
- 马尔科夫链(Markov Chain, MC)算法详解及Python实现
- 身份证号判断男女和生日
- 支持跨平台的移动开发工具大盘点!
- 【转】学术论文写作方法
- EcoFlow正浩践行环保出行理念,为“低碳未来”助力
- python有向图遍历_用Networkx进行有向图遍历
- ngrok域名申请使用外网访问
- 多项式除以多项式例题讲解_多项式乘以多项式训练题.doc
- 这位.NET开发者曾说:“GitHub 存在的意义,是帮助开发人员”,但还是要离职了...
- unity语音聊天--亲加通讯云(Android/iOS)---android
- 第十章 PL/SQL对象类型 ( 1 )