在克隆大型项目的时候,可能实际仅需要其中的一部分文件。以micropython为例,我们可能仅需要它的跨平台编译工具mpy-cross,那么只需要用到其中的libpyports中的部分内容即可。

使用git的sparse-checkout命令,可以只拉取指定的目录和文件。

实际上仍然会下载整个仓库,只是显示的时候仅列出指定的内容,所以并不能缩短下载时间。

下面来说明主要的操作流程:

git init
git remote add -f origin https://github.com/micropython/micropython.git # 替换为需要克隆的仓库地址

# 1.启用并初始化sparse-checkout功能
git sparse-checkout init
# 2.添加需要包含的目录或文件
git sparse-checkout set lib py mpy-cross ports/unix ports/windows
# 3.拉取文件
git checkout master # 或者 git pull origin master

image-20201020180705502

后续可以通过 git sparse-checkout add命令添加其他目录或文件。

网上搜索到的使用方法,大部分都是通过echo "file" >> .git/info/sparse-checkout的方法设定需要拉取的目录,在我的实践中似乎不管用。通过命令来操作更加方便快捷。

参考

  1. Git

  2. git中Sparse Checkout