如何通过HTTPS URL克隆包含私有子模块的私有Git仓库?
Linux下递归克隆含私有HTTPS子模块的GitHub仓库
你可以通过配置Git凭证助手实现无需重复输入凭证、不嵌入PAT、不修改子模块URL的递归克隆,以下是两种常用方案:
1. 持久化凭证存储(适合长期使用)
方案A:明文文件存储(简单易用)
执行以下命令配置Git将凭证保存到本地文件:
git config --global credential.helper store
首次克隆主仓库或拉取子模块时,输入GitHub用户名和个人访问令牌(PAT)(需勾选repo权限),Git会自动将凭证写入~/.git-credentials文件(需确保该文件权限为600避免泄露),后续所有HTTPS操作都会自动读取凭证。
方案B:集成系统密钥环(更安全)
适合带桌面环境的Linux发行版(如GNOME、KDE),凭证会存储在系统密钥环中:
- 先安装依赖包:
# Debian/Ubuntu 系列 sudo apt install libsecret-1-0 libsecret-1-dev # RHEL/CentOS 系列 sudo dnf install libsecret-devel - 配置Git使用libsecret凭证助手:
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
首次输入用户名和PAT后,凭证会存入系统密钥环,后续操作自动调用,安全性更高。
2. 临时缓存凭证(会话内有效)
如果仅需临时使用,可配置Git缓存凭证15分钟(默认):
git config --global credential.helper cache # 可选:修改缓存时长为1小时(3600秒) git config --global credential.helper 'cache --timeout=3600'
首次输入凭证后,会话内的Git操作无需重复验证。
执行递归克隆
配置完成后,直接运行递归克隆命令:
git clone --recurse-submodules https://github.com/你的用户名/你的仓库.git
若已克隆主仓库,拉取子模块执行:
git submodule update --init --recursive
内容的提问来源于stack exchange,提问作者Huakun Shen
相关产品推荐
相关产品推荐

