2

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

 2 years ago
source link: https://os.51cto.com/article/706186.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
2022年,继续做开源的朋友-续篇之稀疏检出-51CTO.COM
2022年,继续做开源的朋友-续篇之稀疏检出
作者:zhushangyuan_ 2022-04-11 11:35:48
本篇就专门讲述下稀疏检出,如何只检出我们关注的那些文件夹或文件,并整理在《2022年,继续做开源的朋友》系列中。

694816600d358831726549840e979722edd824.png

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

​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

0682a8677c04f62084b44304ad8db6a20f3e7f.png

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

59b209777794d21f6ce543fe78049f58e7c5f3.png

3、检出代码

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

git pull origin master

19b9a7689ad680bd7ec1241d6f21cee5bd9dac.png

4、关闭稀疏检出

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

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

548b3976597106cdbe2458254a3a86e545d1d5.png

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

a4ce24523bcc88bea0621417a310b9d2764e5c.png

附录-参考资料:

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

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

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

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

71eea7105a1cf9982d2996c42d853b97bd50ef.jpg


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK