方法一:强制将所有 git 请求转换为 HTTPS(推荐,最快)
在的终端运行:
Bash
运行完上述命令后,再次重试的更新命令:
Bash
git submodule update --init --recursive
注意:如果该子模组是私有仓库(Private Repo),Git 会提示输入 GitHub 的用户名和密码(现在的密码通常是指 Personal Access Token)。如果是公开仓库,则会直接下载。
方法二:手动修改 .gitmodules 文件
如果希望永久性地修改这个项目的配置,可以编辑项目根目录下的 .gitmodules 文件。
-
编辑文件:
使用 vim 或 nano 打开 .gitmodules:
Bash
vim .gitmodules -
修改 URL:
找到 [submodule “policy”] 这一节,将 url 从 SSH 格式改为 HTTPS 格式。
修改前:
Ini, TOML
url = git@github.com:shuosha/policy_training.git修改后:
Ini, TOML
url = https://github.com/shuosha/policy_training.git -
同步并更新(关键步骤):
修改文件后,必须运行 sync 才能让 Git 识别新的 URL,然后再更新:
Bash
git submodule sync git submodule update --init --recursive
方法三:仅修改本地 git 配置(不影响文件)
如果不想改动代码里的 .gitmodules 文件(以免提交上去影响别人),可以只修改 .git/config 文件。
-
打开
.git/config文件:Bash
vim .git/config -
找到
[submodule "policy"]部分,修改url为https://github.com/shuosha/policy_training.git。 -
保存退出,直接运行更新命令。
总结建议
既然在 root@gpufree-container 环境下,我建议直接使用 方法一。它不需要通过编辑器修改文件,且能立即生效解决所有子模组的类似问题。
下一步:
可以直接复制并运行这条命令,然后重试更新:
Bash
git config --global url."https://github.com/".insteadOf git@github.com: && git submodule update --init --recursive