Git 更新子模块URL
直到今天,我还在github中托管我的git存储库及其子模块存储库。超级存储库中所有提交中的子模块文件夹将重定向到子模块存储库中的正确提交 现在,我必须将子模块存储库从github移植到bitbucket,并删除github中的子模块存储库。此操作是否会中断我在超级存储库中的提交?超级存储库提交不在其提交中存储子模块的url信息吗 示例场景: 假设子模块中有一个commitGit 更新子模块URL,git,github,Git,Github,直到今天,我还在github中托管我的git存储库及其子模块存储库。超级存储库中所有提交中的子模块文件夹将重定向到子模块存储库中的正确提交 现在,我必须将子模块存储库从github移植到bitbucket,并删除github中的子模块存储库。此操作是否会中断我在超级存储库中的提交?超级存储库提交不在其提交中存储子模块的url信息吗 示例场景: 假设子模块中有一个commitc67061d7710e699a191965a02d9d0da341d87117,它在许多提交中都在超级存储库中引用。我想更
c67061d7710e699a191965a02d9d0da341d87117
,它在许多提交中都在超级存储库中引用。我想更改提交的引用
githubserver/tree/c67061d7710e699a191965a02d9d0da341d87117
到
bitbucketserver/tree/c67061d7710e699a191965a02d9d0da341d87117
在超级存储库中包含对c67061d7710e699a191965a02d9d0da341d87117的引用的所有提交中
我在其他stackoverflow问题中了解了如何更新子模块的url。但是他们没有明确提到url更新是更改所有提交中的引用,还是仅更改此类操作之后的提交。好消息是,从长远来看,这将很好,因为您将把所有历史记录从github移动到bitbucket,并适当地更新.gitmodules
文件。一旦这样做,新的签出和git子模块init
就会正常工作
坏消息是现有的签出将继续使用旧的远程URL,因此git子模块更新将开始失败。要解决此问题,您必须告诉签出存储库的所有人运行git submodule sync
,以便将子模块的远程更新为bitbucket。因此我更改了.gitmodules
文件和git submodule init
。这是否会在本地更改所有以前提交的子模块url?否,您必须运行git submodule sync
以更新已初始化子模块的远程。.gitmodules
修改,然后执行git submodule sync
将在本地更改所有以前提交的子模块url。但是如何在远程存储库中使用此更改,以便其他人可以在其本地存储库中获得此更改?您必须提交新的.gitmodules
文件。然后告诉人们使用git remote set url
到新的主repo。然后让他们运行一个git pull
,然后运行git submodule sync
。因此,提交.gitmodules
文件中的更改并推送它,远程存储库只需知道新子模块url的位置,这难道不意味着使用old.gitmodules
文件的旧提交会告诉远程存储库仍然指向这些提交中的旧子模块url,并且它们会中断,因此?