点击上方蓝色“程序猿DD”,选择“设为星标”

回复“资源”获取独家整理的学习资料!

作者 | 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-checkoutgit 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

本文通过OpenWrite的Markdown转换工具发布

关注我,回复“加群”加入各种主题讨论群

  • 99行代码的《冰雪奇缘》,收下我的膝盖!

  • 假如曹操是一名程序员,会发生什么?

  • Java开发人员 2019 生态系统信息图

  • MyBatis解析:颠覆你心中对事务的理解!

  • 大批 IDEA 激活码到期之后的乱象...

我在竞选CSDN博客之星,支持我点下面

集合!随我一起搞台 Macbook Pro 如何?

Git 2.25.0 发布,新特性:部分 clone 与稀疏 checkout相关推荐

  1. Git 2.25.0发布,支持部分clone、稀疏checkout

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | oschina 来源 | https://www.osc ...

  2. 微信可直接转账到 QQ;小米联合中国联通推出当前最便宜 5G 套餐;Git 2.25.0 发布 | 极客头条...

    整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  3. 1月15日科技资讯|微信可直接转账到 QQ;小米联合中国联通推出当前最便宜 5G 套餐;Git 2.25.0 发布

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧.扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Sty ...

  4. .NET 4.0 Interop新特性ICustomQueryInterface (转载)

    .NET 4.0 Interop新特性ICustomQueryInterface 在.NET Framework v4.0发布的新功能中,在名字空间System.Runtime.InteropServ ...

  5. Android O(SDK 8.0)新特性,刘海屏

    > Android刘海屏 Android 屏幕,16:9,17:9,19:10,18:9,18.5:9所谓全面屏.挖孔屏.凹凸屏等. android 全面屏/刘海屏有效适配- https://b ...

  6. 高性能数据库引擎 CoolHash 产品宣言 Fourinone4.0版新特性(转)

    Fourinone4.0版新特性:一个高性能的数据库引擎CoolHash(酷哈嘻) 一.前言:如何写一个数据库 如果将操作系统和业务应用之间的软件都统称中间件的话,那么最重要的软件无疑是数据库,它比w ...

  7. .NET Framework 4.0的新特性

    本文将揭示.NET 4.0中的3个新特性:图表控件.SEO支持以及ASP.NET 4可扩展的输出缓存. 图表控件 微软向开发者提供了大量可免费下载的图表控件,可以在.NET 3.5 ASP.NET或W ...

  8. mysql 5.0 php_PHP 5.0的新特性

    PHP 5.0的新特性 最近,读者可以从PHP 4.x版本转移到PHP 5.0版本.正如读者期望的那样,在一个新的主要版本中,它做出了一些重要变更.在这个版本中,PHP后台的Zend引擎经过了完全的重 ...

  9. Tensorflow 2.0的新特性

    Tensorflow 2.0的新特性 几天前,Tensorflow刚度过自己的3岁生日,作为当前最受欢迎的机器学习框架,Tensorflow在这个宝座上已经盘踞了近三年.无论是成熟的Keras,还是风 ...

最新文章

  1. bzoj 1834: [ZJOI2010]network 网络扩容【最大流+最小费用最大流】
  2. OHCI,UHCI,EOHCI,XHCI
  3. 图解WinCE6.0下的内核驱动和用户驱动
  4. mysql 表自动复制_mysql-10临时表、复制表
  5. tornado 重定向404
  6. IEEE Spectrum:这些小机器人又好玩又实用,适合过年带回家
  7. 开源安卓播放器:Dolphin Player 简单分析
  8. ubuntu 截图工具的使用
  9. 简约、高质量简历模板
  10. c# 判断时间是否在 某一时间段内
  11. 高数笔记(六):拉格朗日中值定理,柯西中值定理,洛必达法则,泰勒定理
  12. Photoshop 系列:照片调色记录
  13. Redis 的发布和订阅
  14. 有哪些 必装软件或者app
  15. golang not enough arguments in call to uuid.Must have (uuid.UUID) want (uuid.UUID, error)
  16. 陈吉平-阿里巴巴离职DBA在35岁总结的职业生涯
  17. CDH6.3.1安装
  18. windows nodejs高版本降级为低版本
  19. SourceTree提交vue前端代码报错git -c diff.mnemonicprefix=false -c core.quotepath=false commit -q -F C:\Users\
  20. 【杂谈】如何找回自己的执行力

热门文章

  1. python flask 设置个性化的响应体 响应头 状态码
  2. docker可视化管理工具对比 DockerUI Shipyard Rancher Portainer
  3. golang nil slice 和 empty slic 的区别 空切片
  4. golang 打印调用堆栈
  5. windbg 如何再内核模式调试用户空间的程序
  6. VC 中字符串比较和查找
  7. TCP/IP详解--学习笔记(3)-IP协议,ARP协议,RARP协议
  8. Android--屏幕方向的改变
  9. libvmi编译问题
  10. OpenStack Neutron运行机制解析概要