我无法克隆私有git存储库中存在的子模块。我有权访问整个存储库,
使用了以下命令但是工作,请帮忙。克隆现有存储库中子模块的正确方法是什么?
djrecker$ git submodule update --init --recursive
Submodule 'Path' (git@github.com:Path) registered for path 'App'
Cloning into 'Path'...
Permission denied (publickey).
fatal: Could not read from remote repository.
答案 0 :(得分:26)
我遇到了同样的问题。问题出在你的github repo上,你可能正在使用一些旧的ssh密钥。
您需要更新当前的ssh密钥。
Steps involved are:
1. vim ~/.ssh/id_rsa.pub
2. copy the ssh key
3. Go to the github settings
4. Select the option ssh keys
5. Remove the old ssh keys not used anymore.
6. Add a new ssh key.
7. Try running the "git submodule update --recursive"
这对我有用!!
答案 1 :(得分:10)
我有这个问题。就我而言,公钥(〜/ .ssh / id_rsa)没有在服务器上正确设置。
参考:Git update submodule recursive
# This must be called twice. Once for new and once for existing submodules.
git submodule update --init --recursive
git submodule update --recursive
ssh -vT git@github.com
进行诊断。确保您设置的密钥列在那里。有关权限问题的更多帮助,请按照以下指南操作:
https://help.github.com/articles/error-permission-denied-publickey/ .gitmodules
,确保一切正常。根据@VonC的建议,尝试将它们克隆到一个单独的文件夹中。答案 2 :(得分:3)
有趣的是,在使用HTTPS链接的类似场合为我工作。
答案 3 :(得分:3)
就我而言,当我使用常规命令行(Git CMD)时,它抱怨着同样的问题。然后我尝试了Git Bash,再也没有问题了。
答案 4 :(得分:0)
在我的情况下,此问题是由控制台引起的,它没有要求我输入密码。解决方案是将控制台从CMDER更改为Gitbash。当我使用CMDER时,它不会显示密码窗口,从而导致此访问被拒绝。
答案 5 :(得分:0)
用于Linux / GitBash的TortoiseGit / Windows子系统也有同样的问题。 解决方案是通过代理(密钥)而非密码使用身份验证。
对于 TortoiseGit :
(没有选美的git clone,它会要求输入密码并按预期工作,但是git update失败并显示错误)
对于 WS4L :
$ eval `ssh-agent -s`
$ chmod 600 /path/to/key
$ ssh-add /path/to/key
进行了git submodule update
答案 6 :(得分:0)
我通过在父文件夹及其子文件夹中使用git init创建了错误的子模块。只需删除.git文件夹,然后从正确的父文件夹中的git init开始。
答案 7 :(得分:-1)
Win10 + git bash终端。 就我而言,我是通过VS Code使用git bash的。使用子模块时,git会弹出一个窗口以输入密钥的密码。通过VSCode重击不会弹出此窗口。使用Windows上下文菜单项,在repo文件夹中显示“ Git Bash Here”,如下所示: Context menu Screen Grab
git submodule update
出色地工作。
答案 8 :(得分:-1)
我有同样的问题。我从.gitmodules中删除了该条目并执行了git submodule init; git submodule update
,然后从文件系统中删除了该条目并执行了git submodule update --remote
,它又开始下载子模块了。