如何使用GitHub访问令牌一次性克隆主仓库及其所有递归子模块
Git递归克隆子模块单次输入凭证解决方案
核心原因说明
Ubuntu默认Git凭证助手多为libsecret,子模块克隆时会触发独立Git进程调用GUI凭证输入框,你此前配置的内存缓存未跨进程生效,才会要求反复输入凭证。Windows环境下Visual Studio附带的Git默认绑定系统凭据管理器,可自动跨进程复用令牌,因此没有该问题。
另外弹出的用户名+密码输入框仍可使用令牌验证:用户名留空或填任意值,密码栏直接粘贴访问令牌即可通过验证,只是需要为每个子模块重复操作效率较低。
解决方案
方法1:全局配置凭证自动注入(永久生效,推荐)
该方案会让所有GitHub HTTPS请求自动携带令牌,无需重复配置:
- 执行配置命令,将
<your_access_token>替换为你的实际GitHub访问令牌:git config --global url."https://<your_access_token>@github.com/".insteadOf "https://github.com/" - 配置完成后直接执行原有克隆命令即可,主仓库和所有子模块会自动复用凭证:
git clone --recurse-submodules --remote-submodules https://<access_token>@github.com/user/repo.git - 若后续需要移除该配置,执行:
git config --global --unset url."https://<your_access_token>@github.com/".insteadOf
方法2:替换凭证助手修复缓存失效
- 先清空原有冲突的凭证配置:
git config --global --unset credential.helper - 若需要永久存储凭证,执行:
git config --global credential.helper store - 若仅需要临时缓存,设置缓存时效为3600秒(可自定义时长):
git config --global credential.helper 'cache --timeout=3600'
配置完成后首次克隆输入一次令牌,所有子模块会自动复用缓存的凭证。
方法3:单次克隆临时配置(不修改全局设置)
如果不想改动全局Git配置,克隆时临时指定凭证助手即可:git -c credential.helper='cache --timeout=300' clone --recurse-submodules --remote-submodules https://<access_token>@github.com/user/repo.git
内容的提问来源于stack exchange,提问作者HJP
相关产品推荐
相关产品推荐

