协慌网

登录 贡献 社区

如何更改 git 子模块的远程存储库?

我创建了一个 git 存储库,其中包含一个子模块。我能够告诉子模块本身更改其远程存储库路径,但是我不确定如何告诉父存储库如何更改子模块的远程存储库路径。

如果我有点不走运并且必须手动执行操作,我不会感到惊讶,因为即使删除子模块也不容易。

答案

您应该只能够编辑.gitmodules文件来更新 URL,然后运行git submodule sync --recursive将更改反映到超级项目和工作副本中。

然后,您需要转到.git/modules/path_to_submodule目录,并更改其配置文件以更新 git 路径。

如果回购历史记录不同,那么您需要手动签出新分支:

git submodule sync --recursive
cd <submodule_dir> 

git fetch
git checkout origin/master
git branch master -f
git checkout master

这些命令将在命令提示符下完成工作,而不会更改本地存储库中的任何文件

git config --file=.gitmodules submodule.Submod.url https://github.com/username/ABC.git
git config --file=.gitmodules submodule.Submod.branch Development
git submodule sync
git submodule update --init --recursive --remote

请查看博客以获取屏幕截图: 将 GIT 子模块的 URL / 分支更改为同一存储库的其他 URL / 分支

简单来说,您只需要编辑. gitmodules 文件,然后重新同步和更新:

通过 git 命令或直接编辑文件:

git config --file=.gitmodules -e

要不就:

vim .gitmodules

然后重新同步并更新:

git submodule sync
git submodule update --init --recursive --remote