如何用另一个回购库替换一个git子模块?
如何用一个不同的git仓库替换一个仓库子模块?
具体来说,我有一个子模块:
./ExternalFrameworks/TestFramework
,指向一个git repo git@github.com:userA/TestFramework.git
git@github.com:userB/TestFramework.git
。 问题是,当我用这里描述的方法删除子模块时,然后使用该命令重新添加它
git submodule add git@github.com:userB/TestFramework.git
我得到这个错误:
A git directory for 'ExternalFrameworks/TestFramework' is found locally with remote(s):
origin git@github.com:userA/TestFramework.git
If you want to reuse this local git directory instead of cloning again from
git@github.com:userB/TestFramework.git
use the '--force' option. If the local git directory is not the correct repo
or you are unsure what this means choose another name with the '--name' option.
如果子模块的位置(URL)已更改,则可以简单地:
.gitmodule
文件以使用新的URL git submodule sync
更完整的信息可以在其他地方找到:
首先,用这里已经提到的方法删除当前的子模块,为了方便,我将其包括在内:
.gitmodules
文件中删除相关部分 .git/config
删除相关部分 git rm --cached path_to_submodule
(没有结尾斜杠) 现在,添加带有--name
标志的新子模块。 这会让git在子模块的.git/config
引用一个替代名称,以便与历史上存在的子模块冲突,您仍然希望在之前的历史记录中使用该子模块。
所以输入:
git submodule add --name UpdatedTestFramework git@github.com:userB/TestFramework.git
你会得到你想要的路径加载的子模块。
这些命令将在不改变本地存储库上的任何文件的情况下执行命令提示符下的工作。
git config --file=.gitmodules submodule.Submod.url https://github.com/username/ABC.git
git config --file=.gitmodules submodule.Submod.branch Dev
git submodule sync
git submodule update --init --recursive --remote
链接地址: http://www.djcxy.com/p/2695.html