如何为 Git 个子模块使用 SSH 而不是 HTTP?
How to use SSH instead of HTTP for Git submodules?
为什么人们会遇到这个问题?
$ git clone --recursive git@github.com:acani/Chats.git
克隆到 'Chats'...
权限被拒绝(公钥)。
致命:无法从远程存储库读取。
请确保您拥有正确的访问权限并且存储库存在。
https://github.com/acani/Chats/issues/53#issuecomment-118014684
我读过一些答案,说要将子模块 URL 从 SSH 更改为 HTTP,但我为什么必须这样做。我不想那样做。我想保留它 SSH,这样我就不必在终端中输入我的用户名和密码,如果我想推送。每个人都可以很好地克隆 SSH URL,那么为什么他们不能递归地将其克隆为子模块?
作为解决方法,您可以尝试对任何 github 存储库使用 https url:
cd myParentRepo
git config url.https://github.com/.insteadOf ssh://git@github.com/
# or
git config url.https://github.com/.insteadOf git@github.com:
SSH 协议不支持匿名访问 Git 存储库。
所以,不要使用 SSH 协议。相反,请使用智能 HTTP 协议(推荐)或 Git 协议。
对于存储库 .gitmodules
文件中的每个子模块 URL,将 git@github.com:
替换为 https://github.com/
(使用智能 HTTP 协议)或 git://github.com/
(使用 Git 协议)。
更多信息:Git - The Protocols
这在 .gitmodules 文件中对我有用:
url = git+ssh://git@github.com/path-to-repo
为什么人们会遇到这个问题?
$ git clone --recursive git@github.com:acani/Chats.git 克隆到 'Chats'... 权限被拒绝(公钥)。 致命:无法从远程存储库读取。
请确保您拥有正确的访问权限并且存储库存在。
https://github.com/acani/Chats/issues/53#issuecomment-118014684
我读过一些答案,说要将子模块 URL 从 SSH 更改为 HTTP,但我为什么必须这样做。我不想那样做。我想保留它 SSH,这样我就不必在终端中输入我的用户名和密码,如果我想推送。每个人都可以很好地克隆 SSH URL,那么为什么他们不能递归地将其克隆为子模块?
作为解决方法,您可以尝试对任何 github 存储库使用 https url:
cd myParentRepo
git config url.https://github.com/.insteadOf ssh://git@github.com/
# or
git config url.https://github.com/.insteadOf git@github.com:
SSH 协议不支持匿名访问 Git 存储库。
所以,不要使用 SSH 协议。相反,请使用智能 HTTP 协议(推荐)或 Git 协议。
对于存储库 .gitmodules
文件中的每个子模块 URL,将 git@github.com:
替换为 https://github.com/
(使用智能 HTTP 协议)或 git://github.com/
(使用 Git 协议)。
更多信息:Git - The Protocols
这在 .gitmodules 文件中对我有用:
url = git+ssh://git@github.com/path-to-repo