用例是我必须将某些存储库移动到新服务器。所以这些存储库获得了一个新的 url。
引用这些子模块的父项目需要使用子模块的新 url 进行更新。
我想做以下事情。
- update the .gitmodules file
- git submodule sync
- git submodule update
- commit and push
但是,由于之前的提交有较早版本的 .git 模块,如果我检查父项目的之前提交 - 它不会寻找旧服务器吗?
为了确保可重复性,我们需要让所有旧提交都正常工作。
有解决这个问题的想法吗?
最佳答案
.gitmodules
中的 URL 通常仅在初始化子模块或 git submodule sync
时使用。在初始化(git submodule init
)时,URL 被放入存储库的 .git/config
,当子模块被克隆到位时(在 git submodule update
) 要使用的 URL 取自配置。唯一一次使用 .gitmodules
中的 URL 是在运行 git submodule sync
时,这将类似地更新配置中的 URL,但也会设置 子模块中的 origin
远程到相同的 URL。
这意味着您在 check out 较早的提交和运行 git submodule update
时不会有任何问题 - 当您的子模块中的远程 origin
未更改时您在父存储库中 check out 一个新提交。
关于git - 如何在所有提交中更新子模块 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11987037/