如何使用 ssh 密钥'git clone --recurse-submodules' github 存储库,而无需输入用户名和密码?



你好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询问的确切消息,很难说。很可能是因为一些子模块是用.gitmoduleshttps://协议编写的,而不是用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的权限被暂时删除)。

最新更新