更改所有GIT子repo和提交的GIT子模块URL

更改所有GIT子repo和提交的GIT子模块URL,git,git-submodules,Git,Git Submodules,我正在将所有git回购(包括引用的surepos)切换到另一个服务器URL。 我的问题是作为GIT存储库一部分的.gitmodules文件仍然指向旧的URL 我将最近的提交更改为指向新URL,但是每个旧分支(旧版本和提交)都指向旧URL 是否有方法将.gitmodules文件更改为指向所有提交/分支的正确URL 这是我能找到的最接近解决问题的方法,但对我来说,它不起作用: 这是一个通用的问题,我不应该是唯一一个与它,对吗 提前感谢您的反馈 由于.gitmodules是存储库历史记录的一部分,因

我正在将所有git回购(包括引用的surepos)切换到另一个服务器URL。 我的问题是作为GIT存储库一部分的.gitmodules文件仍然指向旧的URL

我将最近的提交更改为指向新URL,但是每个旧分支(旧版本和提交)都指向旧URL

是否有方法将.gitmodules文件更改为指向所有提交/分支的正确URL

这是我能找到的最接近解决问题的方法,但对我来说,它不起作用:

这是一个通用的问题,我不应该是唯一一个与它,对吗


提前感谢您的反馈

由于
.gitmodules
是存储库历史记录的一部分,因此更改每次提交的URL都需要重写每次提交。是的,GIT是否有任何函数可以这样做?我认为完全重写项目历史记录是个坏主意。至少,你要强迫所有和它一起工作的人都躲起来。历史将与
.gitmodules
首次出现时完全不同。这真的是你想要的吗?但是有什么选择呢?将“旧”URL保留在“旧”提交和发布中?假设您有100种不同类型的发行版(包括补丁),您必须手动编辑它们?有几种方法可以管理它们,但没有一种是万能的。你必须根据自己的需求来决定什么最适合你的项目。就我个人而言,我会让历史指向旧的URL,以避免重写历史,并编写一个脚本来更新所有“活动”分支。如果你想改变历史,我不知道有什么简单的解决办法。