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

oschina
 oschina
发布于 2020年01月15日
收藏 6

Git 2.25.0 发布了,项目贡献者 Taylor Blau 介绍了此版本带来的一些特性上的亮点,包括部分克隆(partial clone)与稀疏检出(sparse checkout)。

partial clone,部分克隆

www.ry96.com_【官方首页】-如意彩票一般来说,Git clone 时副本会复制仓库的所有数据,包括历史记录中每个文件的每个版本,对于非常大的存储库,如果只需要文件的一部分,那会无形中增加网络传输和本地存储的成本。在过去的几个版本中,Git 拥有了执行部分克隆的能力,这意味着它现在可以克隆并使用存储库部分内容而无需拥有所有内容。

目前该特性还处于实验阶段,Gitee 已经初步支持该特性

具体来讲,部分克隆需要客户端做两件事:它必须能够告诉服务器它只需要存储库中的哪些对象,同时还必须能够不与缺少完整对象集的本地存储库产生冲突。www.ry96.com_【官方首页】-如意彩票另一方面,服务器则必须能够解释客户端的请求,仅服务于某些对象,并能够生成适当的响应。

这其中必要的逻辑是需要 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/Cwww.ry96.com_【官方首页】-如意彩票 可以做到这一点。

关于 Git 2.25 的更新内容,详情查看:

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://poshsblackbook.com]
本文标题:Git 2.25.0 发布,新特性:部分 clone 与稀疏 checkout
加载中

精彩评论

网瘾少年徐志摩
网瘾少年徐志摩
很好的文字,字典就有
Force武装卫队
Force武装卫队
安排更新 中午支持
noday
noday
很好的功能,svn就有

最新评论(15

最后_
最后_
mac 版的如何升级
哎码
哎码
终于出这个功能了,面对几百兆的仓库真心痛苦
明月依稀
明月依稀
www.ry96.com_【官方首页】-如意彩票……几百兆讲真,一点不大。www.ry96.com_【官方首页】-如意彩票我们都2G了。还有些大公司项目,里面有N个子模块,子项目等项目,几百G毛毛雨,最后要联合编译,压根就不用git,也用不起。
白小衣
白小衣
那这种用啥方案来协作开发
明月依稀
明月依稀
类似svn的东西,p4什么的。www.ry96.com_【官方首页】-如意彩票允许不全部拷贝。说到底还是钱,还是带宽,还是硬盘限制
7月
7月
“Git 现在提供了一种 cone 模式” 拼写错误了?
boat123
boat123
2.250版本能用了吗现在,看官网上只能下载2.23版本
boat123
boat123
学习了,马上升级
Force武装卫队
Force武装卫队
安排更新 中午支持
容儿2015
满心期待!!
noday
noday
很好的功能,svn就有
网瘾少年徐志摩
网瘾少年徐志摩
很好的文字,字典就有
不羁的醒与醉
不羁的醒与醉
意思到现在还有人分不清git和svn?
陈少鑫
陈少鑫
意思是客户端跟服务器端都得支持才行?
返回顶部
顶部

页面底部区域 foot.htm