Git的子模块的问题时,子模块都是私人Github上回购(Problems with git sub

2019-06-24 12:58发布

我有一个容纳3子模块,所有3个属于私人也Github上的私人回购协议。

我已经产生了我的EC2服务器上4个SSH密钥并应用它们作为Github上部署键全部4个私人仓库。

我能够克隆主存储库,因为它认识到SSH密钥。 当我运行“混帐子模块更新”失败与以下错误私人回购协议:

错误:库未找到。 致命:远程端挂机意外

如果我手动签出那些它的工作原理私人回购协议,但不使用git的子模块命令时。 任何的想法? 难道这不完全支持?

Answer 1:

GitHub的认证是一个有点奇怪。 他们不使用的用户名; 他们只是根据你提出你是哪个用户的公钥推断。 既然你产生4个部署键,它是哪一个会被你的服务器在连接到github上可以使用任何人的猜测 - github上会接受其中任何一个,然后拒绝给没有注册的关键库的任何访问。

因此,最简单的解决方法就是使用的所有存储库的单一部署的关键。

如果你不能,但是,你可以解决这个使用ssh主机别名破解。 添加到您的服务器~/.ssh/config节如下所示:

Host repo-foo
  HostName  ssh.github.com
  Port 443
  User git
  IdentityFile /path/to/my-ssh-key-file-for-foo
  IdentitiesOnly yes

Host repo-bar
  HostName ssh.github.com
  Port 443
  User git
  IdentityFile /path/to/my-ssh-key-file-for-bar
  IdentitiesOnly yes

然后点你在子模块repo-bar:username/bar.gitrepo-foo:username/foo.git而不是使用git@github.com:...的形式。

这将有效地使Git和ssh来对待每一个仓库作为生活在不同的服务器上,并传递一个明确的身份文件,所以在什么键使用不会产生混淆。



文章来源: Problems with git submodules when submodules are private Github repos