Git clone 默认是完整检出整个仓库,如果只想检出某一部分文件或者目录,就需要用到稀疏检出功能(Sparse checkout)。
举个例子,我只对 Telegram iOS 源码中的 SSignal 子模块感兴趣,想单独对它检出(Checkout)。
创建一个空目录,例如名称为 SSignalKit:
mkdir SSignalKit cd SSignalKit
初始化为 Git 仓库,并添加远端仓库地址:
git init git remote add origin https://github.com/TelegramMessenger/Telegram-iOS.git
配置本地仓库为稀疏检出模式:
git config core.sparsecheckout true
添加要检出的目录或者文件路径到
.git/info/sparse-checkout
,每个文件或者目录的路径单独一行:echo "submodules/SSignalKit/*" >> .git/info/sparse-checkout
拉取远端代码:
git pull origin master
如果 .git/info/sparse-checkout
文件有更改,那么需要执行 git checkout
应用变更。