如何在私有Git仓库中添加私有Git子模块?
私有仓库间添加Git子模块的操作方案
针对两个私有仓库间添加Git子模块的需求,以下是可行的操作方案和问题处理方法:
一、先搞定权限基础
首先得保证你用的账号同时能访问主仓库和子仓库:
- 不管是GitHub、GitLab还是其他托管平台,要确认账号已经被添加到两个私有仓库的成员列表,至少有读取权限
- 本地Git已经配置好对应的访问凭证(SSH密钥或者HTTPS账号密码)
二、优先用SSH地址添加(稳定无密码)
这是最省心的方式,配置一次SSH密钥后不用反复输密码:
- 先确认本地SSH密钥已经生成,并且公钥已经添加到你的平台账号SSH设置里
- 切换到主仓库的根目录,执行添加命令:
举个GitHub的实际例子:git submodule add git@<平台域名>:<用户名>/<私有子仓库名>.git <本地要放的路径>git submodule add git@github.com:your-username/private-sub-repo.git ./submodules/my-sub - 命令执行完后,把自动生成的
.gitmodules文件和子模块目录提交到主仓库就行
三、用HTTPS地址添加(需配置凭证缓存)
如果习惯用HTTPS,得先配置Git缓存凭证,避免每次操作都输密码:
- 临时缓存凭证(默认15分钟有效):
或者设置长期缓存(存在系统钥匙串里):git config --global credential.helper cache# macOS系统 git config --global credential.helper osxkeychain # Windows系统 git config --global credential.helper wincred - 执行添加子模块命令:
git submodule add https://<平台域名>/<用户名>/<私有子仓库名>.git <本地存放路径> - 第一次执行会弹框或提示输入账号密码,之后Git会自动帮你缓存
四、常见坑的解决办法
- 要是出现
Permission denied错误:- 先检查SSH密钥是不是配错了,或者HTTPS账号有没有子仓库的访问权限
- 核对一下子仓库的地址拼写,别写错用户名或仓库名
- 克隆包含私有子模块的主仓库时,记得加
--recurse-submodules参数,或者克隆完后执行:git submodule init git submodule update
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

