Skip to content

11.24 GIT与GFW

https://scz.617.cn/unix/202211231303.txt

Q:

有时可能需要

git clone --recursive git@...

但.gitmodules中是这样的

[submodule "subm1"] path = subm1 url = https://... [submodule "subm2"] path = subm2 url = https://...

于是递归中出现

git clone https://...

众所周知,寡妇王对https并不友好,挂线路自然是可以的,但我想问的是,假设可 以手工修改拖回本地的.gitmodules,有无正经办法让递归时不用https。现在只能 clone完主模块后,手工clone每个子模块,将https换成git;倒也可行,只是太low。

A: 2022-11-23

网友「李同学virusdefender」(3560808645)指出,可以用insteadOf配置。实测如下 用法满足原始需求

cd /tmp git config --global [email protected]:.insteadOf https://github.com/ git config -l git clone --recursive https://github.com/libbpf/libbpf-bootstrap.git libbpf-bootstrap git config --global --unset [email protected]:.insteadOf git config -l

"git config -l"无必要,只是为了观察配置。"--unset"无必要,只是出于洁癖,我 不喜欢改.gitconfig文件。配置生效期间,所有"https://"被自动替换成"git@..."。

A: zz@nsfocus 2022-11-24

insteadOf算是最优解,但最初我想问的是,假设可以手工修改拖回本地的 .gitmodules,有无正经办法让递归时不用https,zz回答了这个问题。

cd /tmp git clone [email protected]:libbpf/libbpf-bootstrap.git libbpf-bootstrap cd libbpf-bootstrap

修改".gitmodules"


[submodule "libbpf"] path = libbpf url = [email protected]:libbpf/libbpf.git [submodule "bpftool"] path = bpftool url = [email protected]:libbpf/bpftool.git [submodule "blazesym"] path = blazesym url = [email protected]:libbpf/blazesym.git


git submodule update --init --recursive

bpftool子模块下还有另一个libbpf子模块,若上述命令未能完成所有递归,就继续 修改"bpftool/.gitmodules"


[submodule "libbpf"] path = libbpf url = [email protected]:libbpf/libbpf.git


cd bpftool git submodule update --init --recursive

其实最初我想问的是这个答案,我不知道上述"git submodule"用法。