我需要将一个子模块从一个gerrit服务器克隆到我的本地项目。这是一个有效的.gitmodule文件:
[submodule "blah/blah/thing"]
path = blah/blah/thing
url = ssh://my_username@gerrit.somewhere.com/some-thing.git
这是我想要工作的.gitmodule文件,因为它适用于其他团队成员:
[submodule "blah/blah/thing"]
path = blah/blah/thing
url = gerrit.somewhere.com:some-thing.git
当我尝试使用后一种形式时,我收到此错误:
$ git submodule update --init --recursive
Submodule 'blah/blah/thing' (gerrit.somewhere.com:some-thing.git) registered for path 'blah/blah/thing'
Cloning into 'blah/blah/thing'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Clone of 'gerrit.somewhere.com:some-thing.git' into submodule path 'blah/blah/thing' failed
怎么了?
答案 0 :(得分:3)
不将您的用户名放在.gitmodule文件中。这将导致所有用户尝试使用您的用户名获取子模块。而是按照第二个示例中的格式,在.ssh/config
文件中指定您的用户名:
Host gerrit.somewhere.com
User my_username
(这假设你使用的是ssh,似乎就是这种情况。如果你也使用https,请查看.netrc文件。)
答案 1 :(得分:0)
我怀疑您没有以同一用户身份登录。试试
url = my_username@gerrit.somewhere.com:some-thing.git
其中my_username
与您的ssh:
网址相同。