我想克隆一个存储库,包括其子模块。
我在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.proxy
和 http.sslCert
。您应该能够直接使用后者提供证书文件,而无需将其“安装”在系统 CA 路径中。
关于git - 如何 "git clone"包括无法从客户端主机访问的子模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12373949/