How to use SSH instead of HTTP for Git submodules?

2019-05-02 15:59发布

Why are people having this problem?

$ git clone --recursive git@github.com:acani/Chats.git Cloning into 'Chats'... Permission denied (publickey). fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

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

I've read some answers that say to change the submodule URL from SSH to HTTP, but why should I have to do that. I don't want to do that. I want to keep it SSH so that I don't have to enter my username & password into Terminal if I want to push. Everyone can clone the SSH URL fine, so why can't they recursively clone it as a submodule?

2条回答
祖国的老花朵
2楼-- · 2019-05-02 16:39

The SSH protocol doesn’t support anonymous access to a Git repository.

So, don't use the SSH protocol. Instead, use either the Smart HTTP protocol (recommended) or the Git protocol.

For every submodule URL in your repository's .gitmodules file, replace git@github.com: with either https://github.com/ (to use the Smart HTTP protocol) or git://github.com/ (to use the Git protocol).

More info: Git - The Protocols

查看更多
smile是对你的礼貌
3楼-- · 2019-05-02 16:51

As a workaround, you can try using https url for any 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:
查看更多
登录 后发表回答