如何通过 ssh 密钥使用 git 子模块?

问题描述 投票:0回答:2

我正在使用 github 上的主 private 存储库。 我在 github 上的设置中添加了部署密钥并通过命令拉取:

GIT_SSH_COMMAND="ssh -i /root/.ssh/repo.key" git pull

我还编辑 .git/config 文件:

[remote "origin"]
  url = [email protected]:username/reponame.git
  fetch = +refs/heads/*:refs/remotes/origin/*

而且它有效。 但我也有一个子模块(在私人存储库中),我想像主存储库一样通过 ssh 密钥拉取它。 我尝试向子模块存储库添加新密钥并编辑 .git/config:

[submodule "misc/repo_sub"]
  url = [email protected]:username/repo_sub.git

GIT_SSH_COMMAND="ssh -i /root/.ssh/repo_sub.key" git submodule update --remote misc/repo_sub

我也尝试过:

cd misc/
GIT_SSH_COMMAND="ssh -i /root/.ssh/repo_sub.key" git pull

但它也不起作用。

那么我如何通过密钥从私有 github 存储库更新子模块或者如何通过密钥拉取它们?

git github
2个回答
7
投票

我在 .git/modules 中找到了子模块的配置,并将 https 链接更改为 ssh。

此命令运行正常后:

GIT_SSH_COMMAND="ssh -i /root/.ssh/repo_sub.key" git submodule update --remote misc/repo_sub

0
投票
  1. 使用正确的 SSH 拉取子模块:
GIT_SSH_COMMAND="ssh -i ~/.ssh/submodule" git submodule update
  1. 更改子模块的SHH命令
cd submodule/path &&
git config core.sshCommand "ssh -i ~/.ssh/submodule"

现在您可以从子模块或父模块中

git pull
,并且两者都应该使用不同的 ssh 密钥。

© www.soinside.com 2019 - 2024. All rights reserved.