你好StackOverflow社区成员,
我正在寻找一些帮助"gitclone--recurse-submodules"使用ssh密钥创建github repo,而无需询问用户名和密码。
我使用正确设置的ssh密钥克隆repos没有问题:
git clone git@github.com:{company_name}/{main_repo}.git
这里的一切都按预期进行,项目文件在不需要我用户名和密码的情况下即可检索。
然而,当我尝试自动初始化和更新存储库中的每个子模块时,情况并非如此(根据指令):
git clone --recurse-submodules git@github.com:{company_name}/{main_repo}.git
当我运行这个程序时,在检索任何子模块之前,我会被要求提供用户名和密码。这是非常不希望的。
有什么想法吗?当我使用--recurse子模块运行时,为什么会要求我提供用户名和密码?我有权单独成功克隆子模块转发(无需输入用户名和密码):
git clone git@github.com:{company_name}/{submodule_repo}.git
非常感谢您的出色协助!
如果不看Git询问的确切消息,很难说。很可能是因为一些子模块是用.gitmodules
和https://
协议编写的,而不是用ssh://
或git@
协议编写的。
在这种情况下,使用git config --global url.<base>.insteadOf
来动态替换URL。类似的东西
git config --global url.git@github.com:.insteadOf https://github.com/
(请注意git@github.com:
后面的冒号;有必要将https://github.com/user/repo.git
映射到git@github.com:user/repo.git
)。
请参阅中的更多示例https://stackoverflow.com/search?q=%5Bgit-子模块%5D+代替
发现子模块权限上的一些管理模块导致了问题(即,我访问其中一个子模块repos的权限被暂时删除)。