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

zhushangyuan_
发布于 2022-4-7 18:53
浏览
2收藏

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

【本文正在参与优质创作者激励】
见社区上有些仓库特别大,下载起来特别花时间。本篇就专门讲述下稀疏检出,如何只检出我们关注的那些文件夹或文件,并整理在《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

2022年,继续做开源的朋友-续篇之稀疏检出-鸿蒙开发者社区

然后编辑该仓库目录下的 .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

2022年,继续做开源的朋友-续篇之稀疏检出-鸿蒙开发者社区

3、检出代码

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

git pull origin master

2022年,继续做开源的朋友-续篇之稀疏检出-鸿蒙开发者社区

4、关闭稀疏检出

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

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

2022年,继续做开源的朋友-续篇之稀疏检出-鸿蒙开发者社区

如果需要彻底关闭稀疏检出,配置 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

2022年,继续做开源的朋友-续篇之稀疏检出-鸿蒙开发者社区

附录-参考资料

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-4-7 18:54:50修改
6
收藏 2
回复
举报
1条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

这方法对于经常用Git的人太关键了!

回复
2022-4-8 10:14:35
回复
    相关推荐