用例是我必须将某些存储库移至新服务器。因此,这些存储库将获得一个新的URL。
引用这些子模块的父项目需要使用该子模块的新url进行更新。
我想做以下事情。
但是,由于先前的提交具有.gitmodule的早期版本,如果我 checkout 父项目的先前的提交-它将不寻找旧服务器吗?
为了确保可重复性,我们需要所有旧的提交都可以正常工作。
有解决这个问题的主意吗?
最佳答案
通常仅在初始化子模块时或在.gitmodules
上使用git submodule sync
中的URL。初始化(git submodule init
)时,将URL放入存储库的.git/config
中,并且将子模块克隆到位(在git submodule update
上)时,要使用的URL从配置中获取。使用.gitmodules
中的URL的唯一其他时间是运行git submodule sync
时,这将类似地更新配置中的URL,但还将子模块中的origin
远程设置为相同的URL。
这意味着在 checkout 较早的提交并运行git submodule update
时不会有任何问题-在父存储库中 checkout 新的提交时,子模块中的远程origin
不会更改。
关于git - 如何在所有提交中更新子模块URL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11987037/