git - 如何 "git clone"包括无法从客户端主机访问的子模块?

标签 git proxy git-submodules

我想克隆一个存储库,包括其子模块。

我在this question了解了--recursive选项,但此解决方案要求可以从克隆主机访问子模块存储库。

是否有一些开关可以直接从可访问的主机克隆子模块?

有一个 https 代理,理论上我可以通过它访问子模块存储库,但克隆主机没有安装所需的证书。因此,找到一种在用户空间安装某个 https 证书的方法可能也是一个解决方案。

最佳答案

如果远程服务器(评论中的 host1)必须代表您执行克隆或获取,那么不,您不能执行此操作。

但是,由于子模块本身就是存储库,因此如果将它们克隆到 host1 上,您可以直接使用它们。克隆主存储库后,编辑 .gitmodules 文件并将 Github URL 更改为 host1:mainrepo 的相应子目录:

[submodule "submod1"]
        path = extern/sub1
        url = git://github.com/user/myproject

更改为

[submodule "submod1"]
        path = extern/sub1
        url = host1:git/mainproject/extern/sub1

然后您可以使用 git submodules 命令来使用它们。

(不过,您必须小心:不要将更改提交到 .gitmodules 或将提交推送到 host1 上的子模块中,除非您确实有意这样做!)


对于您的替代问题,请查看 Git 配置设置 http.proxyhttp.sslCert。您应该能够直接使用后者提供证书文件,而无需将其“安装”在系统 CA 路径中。

关于git - 如何 "git clone"包括无法从客户端主机访问的子模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12373949/

相关文章:

git - 如何使用 git-svn 重新获取新指定分支的修订版

php - 代理后面的 curl 发布文件返回错误

Python 请求不适用于 https 代理

linux - Squid 代理服务器管理界面

Git 子模块校验错误 : "fatal: reference is not a tree"

git - SBT 能否刷新 git uri 依赖项(总是或按需)?

git - Mercurial 将补丁复制到存储库

git - 如何在接收后 Hook 中使用 GIT 访问存储库文件

每个分支的 git 子模块更新

eclipse - 如何将 git 子模块包含到项目中?