如何在Git子模块中使用SSH而不是HTTP?

时间:2015-07-02 12:38:57

标签: git github ssh git-submodules git-clone

为什么人们有这个问题?

$ git clone --recursive git@github.com:acani/chats.git 克隆到'聊天' ... 权限被拒绝(publickey)。 致命的:无法从远程存储库读取。

请确保您拥有正确的访问权限并且存储库已存在。

https://github.com/acani/Chats/issues/53#issuecomment-118014684

我已经阅读了一些说明将子模块URL从SSH更改为HTTP的答案,但为什么我必须这样做。我不想这样做。我想保留SSH,以便我不必输入我的用户名和用户名。如果我想推送密码到终端。每个人都可以很好地克隆SSH URL,那么他们为什么不能将它作为子模块递归克隆呢?

2 个答案:

答案 0 :(得分:5)

作为一种解决方法,您可以尝试使用https url进行任何github repo:

cd myParentRepo
git config url.https://github.com/.insteadOf ssh://git@github.com/
# or
git config url.https://github.com/.insteadOf git@github.com:

答案 1 :(得分:1)

SSH协议不支持匿名访问Git存储库。

因此,请勿使用SSH协议。而是使用Smart HTTP协议(推荐)或Git协议。

对于存储库.gitmodules文件中的每个子模块URL,将git@github.com:替换为https://github.com/(使用Smart HTTP协议)或git://github.com/(使用Git协议) )。

更多信息:Git - The Protocols