如何直接向作为闭源仓库子模块的GitHub开源库推送代码?
解决方案
你可以通过以下两种方式,在不修改.gitmodules文件的前提下,直接向HTTPS检出的子模块推送修改:
方案一:为子模块本地配置SSH推送地址(推荐)
这种方式让子模块保持HTTPS地址用于拉取(方便同事操作),但仅在你本地使用SSH地址推送,无需修改仓库共享的.gitmodules:
- 进入子模块目录:
cd submodules/muscle - 查看当前远程仓库的拉取/推送地址:
git remote -v - 修改远程仓库的推送地址为SSH格式:
git remote set-url --push origin git@github.com:jfriesne/muscle.git - 再次验证地址,确认拉取(fetch)是原HTTPS地址,推送(push)是SSH地址:
git remote -v
完成后,你就可以直接在子模块目录执行git commit和git push,用SSH身份认证推送修改;同事拉取子模块时依然使用.gitmodules中的HTTPS地址,无需你的GitHub权限。
方案二:使用HTTPS + 个人访问令牌(PAT)推送
GitHub仍支持HTTPS推送,但需用**个人访问令牌(PAT)**替代密码认证:
- 在GitHub生成一个具备
repo权限的个人访问令牌(PAT); - 推送修改时,Git弹出身份验证请求时,用户名填写你的GitHub账号名,密码填写生成的PAT;
- 可选:配置Git凭证助手记住PAT,避免每次推送重复输入:
git config --global credential.helper store
第一次输入PAT后,Git会将凭证存储在本地,后续推送无需再次验证。
内容的提问来源于stack exchange,提问作者Jeremy Friesner
相关产品推荐
相关产品推荐

