在不同的机器上使用不同的git子模块URL

Mic*_*ard 4 git

有没有办法在一台机器上使用一个子模块URL,但在另一台机器上使用不同的子模块URL?

假设我有一台机器对中央服务器上的git存储库进行了身份验证SSH访问,而另一台机器无法访问该服务器.在经过身份验证的计算机上,我习惯git-daemon将存储库共享给未经身份验证的计算机.

这里的问题是我克隆的存储库有几个子模块依赖项,所有这些都是服务器上需要经过身份验证的SSH访问的存储库.在这种情况下,我还将所有子模块存储在我的经过身份验证的计算机上,因此我只需更新.gitmodules文件:

[submodule "@sub-a"]
    url = ssh://<authenticated-url>/<repo>
    branch = master
Run Code Online (Sandbox Code Playgroud)

至...

[submodule "@sub-a"]
    url = git://<ip-of-authenticated-machine>/<repo>
    branch = master
Run Code Online (Sandbox Code Playgroud)

然后运行git submodule sync并将git submodule update --init -r直接从我的经过身份验证的计算机而不是从服务器获取子模块.

我的问题是,有没有可行的方法来做到这一点,以便我可以在机器之间自由移动,并期望正确的git-submodule行为

IrL*_*LED 6

您可以更改子模块属性.git/config.在您的情况下,您可以url[submodule "<name>"]部分更改.请记住,这些属性将无法生存git submodule deinit,git submodule sync
详细

git submodule deinit     # deinitialize submodule, relevant section in .git/config will be removed
rm -fdr .git/modules/    # clear submodules' local repos
git submodule init       # relevant section will be copied (partially) from .gitmodules to .git/config
...                      #Edit .git/config with new url for submodule
git submodule update     # submodule will be updated from new url.
Run Code Online (Sandbox Code Playgroud)