我有一个几个git存储库,所有这些都有一个或多个子模块,并且两者都是corporate lan/https url(因此只能从Corp LAN访问(。
(。从外部/公共网络中,SSH对存储库的访问是可能的,我可以通过全局.gitConfig url.insteadof重定向来减轻切换主要存储库的URL,但是该规则似乎并没有应用于子模型(也是HTTPS URL(。
除了调整每个存储库的.git/config文件之外,还有其他方法...即我可以在Global .gitConfig中设置的东西吗?
我找不到使用git配置的方法,而是用野蛮的力量进行:
# test step, replace the "url = https://github.com/" manually
# verify the desired effect
# note the comma in sed command, it's unusual and valid
sed 's,https://github.com/,git@github.com:,g' .git/modules/*/config | grep url
# -i to modify the files
sed -i 's,https://github.com/,git@github.com:,g' .git/modules/*/config
来自父存储库。
或与 @torek的--global
一起去,如果影响全局配置不是问题:
git config --global url."git@github.com:".insteadOf "https://github.com/"
# or
git config --global url."https://github".insteadOf git://github
# for reverse
如果您对更改全局配置不满意,则可能需要分别配置每个子模块,因为每个subpodule都是其自己的存储库。
幸运的是git提供git submodule foreach
命令,
在每个检查的子模块中评估任意外壳命令。
重要的是,它确实发生在每个检查的子模块中。意味着在运行git submodule update
之前,一些子模块将被忽略。
so
$ git config --local url."git@github.com:".insteadOf "https://github.com/"
$ git submodule foreach --recursive
'git config --local url."git@github.com:".insteadOf "https://github.com/"'
应该为主要存储库,其子模型和子模型的子模型掌握。