温馨提示:本文翻译自stackoverflow.com,查看原文请点击:git - How to change url/path of a submodule
git git-submodules

git - 如何更改子模块的URL /路径

发布于 2020-03-31 23:42:24

这是我的.gitmodules

[submodule "app/code/EthanYehuda/CronjobManager"]
        path = app/code/EthanYehuda/CronjobManager
        url = https://company@bitbucket.org/some_user/ethanyehuda_cronjobmanager.git

我需要将网址更改为 https://github.com/Ethan3600/magento2-CronjobManager.git

所以我只是改变了它:

[submodule "app/code/EthanYehuda/CronjobManager"]
        path = app/code/EthanYehuda/CronjobManager
        url = https://github.com/Ethan3600/magento2-CronjobManager.git

然后我将文件添加到暂存区域并进行提交:

git add .gitmodules
git commit -m "change url of submodule xy"

然后我执行了git submodule update --init但是如果我去app/code/EthanYehuda/CronjobManager展示遥控器,那我仍然会https://company@bitbucket.org/some_user/ethanyehuda_cronjobmanager.git

查看更多

提问者
Black
被浏览
9
Black 2020-02-01 00:11

对我来说,我发现的解决方案不起作用,因为我的存储库的git历史与新存储库的历史完全不同。

让我解释。我收到了一个Zip文件项目。我初始化了一个新的仓库,并提交了文件并将其推送到我的位桶中。

然后我发现,这是一个公共的github项目。所以我想将URL更改为github存储库。但是它们有着完全不同的git历史记录(我的存储库只有一个初始提交,而github存储库包含所有提交。)

因此,仅通过更改URL便无法使用。

因此,我必须删除子模块,然后再次创建它。

提示<name_of_submodule>=应用程序/代码/ EthanYehuda / CronjobManager(就我而言)

删除:

git submodule deinit <name_of_submodule>
git rm -f <name_of_submodule>
rm -rf .git/modules/<name_of_submodule>
git commit -m "Deleted submodule xy"

重新添加:

git submodule add --force https://github.com/example/foo-bar.git <name_of_submodule>
git commit -m "Add submodul xy"

提取子模块app / code / EthanYehuda / CronjobManager错误:服务器拒绝了对未指定对象的请求9b677ef0e750acb9292030306bd97a3ee2734c61

↑如果这样显示错误了在克隆如分期拉项目之后,那么你必须syncupdate --initgit pull

git submodule sync
git submodule update --init