更改git历史记录中所有提交的git子模块的远程存储库
如何在不破坏提交历史记录的情况下更改git子模块的远程url? 当前,如果我签出旧的提交,我的子模块似乎有旧的远程url开关不再存在 我的工作流程:更改git历史记录中所有提交的git子模块的远程存储库,git,git-submodules,git-history,Git,Git Submodules,Git History,如何在不破坏提交历史记录的情况下更改git子模块的远程url? 当前,如果我签出旧的提交,我的子模块似乎有旧的远程url开关不再存在 我的工作流程: 使用提交A、B克隆repo git子模块更新--init 更改子模块url 将.gitmodules推送到远程(提交C) 使用提交A、B、C克隆repo 切换到提交 git子模块更新--初始化失败 ->还需要新的子模块远程URL,但仍然需要.gitmodules中的旧URL 看来,git子模块更新--init仍在尝试使用旧的远程url 如果您也尝试
git子模块更新--init
仍在尝试使用旧的远程url
如果您也尝试使用建议的git子模块更新
,但我也遇到了错误:
名称或标识符为OLD\u REPO\u name的Git存储库不存在,或者您对正在尝试的操作没有权限。
提交未绑定到远程。更改远程服务器后,该更改将对所有提交生效,无论是旧提交还是新提交
要更改子模块的URL,您需要:
- 更改超级项目根目录下文件
中的URL李>.gitmodules
- 运行
将更改复制到git submodule sync
.git/config
插入子模块,然后运行cd
更改子模块中的urlgit remote set url
当您在超级项目中签出一个旧的提交时,您会得到旧的
。gitmodules
,但这并不重要-git
不使用。gitmodules
-它使用.git/config
中的URLgit sync
将URL从.gitmodules
复制到.git/config
。因此,在使用旧的签出旧的提交后,.gitmodules
不运行git sync
,并且git
将继续使用.git/config
中的新URL,让我们尝试另一种方法。不替换配置文件中的URL,而是动态替换URL:
git config --global url.<NEW-URL>.insteadOf <OLD-URL>
git config--全局url..而不是
请参阅about
url..而不是
这并不能解决我的问题。如果我将repo和swtich克隆到历史记录中的旧提交,.gitmodule文件仍然具有旧的不存在的子模块路径。仅在我更改了.gitmodules后才提交。您的问题到底是什么?问题是缺乏信息。你执行了什么命令?你犯了什么错误?添加了更多信息,希望helps@User_12399我在答案中添加了一段。好的,但是“git子模块更新--init”仍然试图使用旧的远程url和failesok,这是一个手动步骤,git repo的每个用户都知道,但至少是一种工作方法,谢谢