2022年,继续做开源的朋友-续篇之稀疏检出

系统 OpenHarmony 开源
本篇就专门讲述下稀疏检出,如何只检出我们关注的那些文件夹或文件,并整理在《2022年,继续做开源的朋友》系列中。

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​https://ost.51cto.com​

见社区上有些仓库特别大,下载起来特别花时间。本篇就专门讲述下稀疏检出,如何只检出我们关注的那些文件夹或文件,并整理在《2022年,继续做开源的朋友》系列中。

1、 什么是稀疏检出

如果Git仓库特别大,每次执行Git命令,等待时间会特别长。为解决这些问题,从 1.7.0 开始,Git 引入稀疏检出( sparse checkout)特性,稀疏检出机制允许只检出指定目录或者文件,这在大型 Git 仓库中,将大幅度缩短 Git 执行命令的时间。要想只检出指定的目录或文件,需要在 .git/info/sparse-checkout 文件中指定目录或文件的路径。

下面将以如何快速检出仓库中的https://gitee.com/openharmony/docs部分文件夹为例进行演示。

2、为Git配置稀疏检出

创建一个目录docs,再初始化一个 Git 仓库,以便用稀疏检出的方式检出https://gitee.com/openharmony/docs仓库中的部分文件夹。切换到新创建的目录,然后使用 git config core.sparseCheckout true 命令开启 Git 稀疏检出模式。如下图所示:

mkdir docs
cd docs
git init
git config core.sparseCheckout true
git config --list

然后编辑该仓库目录下的 .git/info/sparse-checkout 文件,指定检出规则。.git/info/sparse-checkout 中使用和 .gitignore 相同的匹配模式,例如 非匹配 !/dir2/* 以及 /*.java 等。这里只检出https://gitee.com/openharmony-sig/online_event仓库中的/zh-cn/device-dev/kernel 文件夹,并把本地仓库和远程仓库关联起来。

echo zh-cn/device-dev/kernel >> .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/docs.git

3、检出代码

继续执行命令检出代码,检出效果如图所示。可以看出实际上,只检出了指定的目录。

git pull origin master

4、关闭稀疏检出

我看看如何检出全部的文件,执行下面的命令,效果如图:

echo "/*" > .git/info/sparse-checkout
git read-tree -mu HEAD

如果需要彻底关闭稀疏检出,配置 Git 的 core.sparseCheckout 为 false 以及移除 .git/info/sparse-checkout 文件即可。

5、git sparse-checkout命令

对于高版本的git,可以直接使用git sparse-checkout来配置稀疏检出。git新版本下载地址为https://git-scm.com/downloads。对git sparse-checkout命令不再一一介绍了,直接体验下即可快速掌握。命令和执行效果图示如下:

mkdir my-docs
cd my-docs/
git init
git sparse-checkout init
git sparse-checkout add /zh-cn/device-dev
git sparse-checkout list
git remote add origin https://gitee.com/openharmony/docs.git
git pull origin master

附录-参考资料:

https://git-scm.com/docs/git-sparse-checkout。

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​https://ost.51cto.com​

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2023-02-24 11:29:13

2022-12-15 08:17:30

2022-11-15 09:28:53

2022-01-06 14:35:17

技术趋势开源云计算

2023-01-05 08:22:41

HelloGitHu开源项目

2021-12-29 15:53:07

云计算大数据安全

2022-07-01 05:58:38

开源技术开源

2022-07-04 23:16:21

开源技术容器

2022-01-14 12:56:38

非结构化数据数据管理IT领导者

2010-08-05 13:04:05

路由器

2022-01-26 23:16:25

开源NLP 库GitHub

2014-11-10 10:51:23

锐捷

2022-08-25 10:36:40

编程语言排行榜

2010-10-27 17:17:38

Symbian开源

2022-01-17 10:01:46

Linux 开源操作系统

2023-02-06 08:25:51

开源项目去中心化

2010-07-27 20:37:59

点赞
收藏

51CTO技术栈公众号