我正在使用 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/modules 中找到了子模块的配置,并将 https 链接更改为 ssh。
此命令运行正常后:
GIT_SSH_COMMAND="ssh -i /root/.ssh/repo_sub.key" git submodule update --remote misc/repo_sub
GIT_SSH_COMMAND="ssh -i ~/.ssh/submodule" git submodule update
cd submodule/path &&
git config core.sshCommand "ssh -i ~/.ssh/submodule"
现在您可以从子模块或父模块中
git pull
,并且两者都应该使用不同的 ssh 密钥。