git:更改克隆子模块的原点



我创建了一个项目submodule并将其放在Github上。

我创建了另一个项目supermodule,然后做了这个:

cd supermodule
git init
mkdir lib
git clone git://github.com/tandu/submodule lib/submodule
git submodule add ./lib/submodule lib/submodule

这工作正常,但在网站上,它在查看文件时找不到子模块的链接(实际上它只是永远说"加载提交数据")。 子模块文件夹本身具有正确的origin

显然,我应该做的是

...
mkdir lib
git submodule add git://github.com/tandu/submodule lib

。但现在为时已晚。 如何使此项目中的子模块正确指向origin

这显然在很大程度上取决于您使用的 git 版本。

  1. 如果存在,请更改.gitmodules文件的[submodule "<dirname>"]部分中的url条目。
  2. 如果存在,请更改.git/config文件的[submodule "<dirname>"]部分中的url条目。
  3. 更改子模块本身配置中的urlconfig文件的位置取决于版本。旧版本在<dirname>/.git/config中,较新的版本在.git/modules/<dirname>/config。但是,您始终可以使用以下命令:
cd <dirname>
git config remote.origin.url <new_url>

在其他问题中,我找到了更现代的 Git 版本 (2.25) 的答案

git submodule [--quiet] set-url [--] <path> <newurl>

假设您在目录 external/foo-lib 中有子模块,其起源是https://github.com/example-user/foo-lib.git的,并且您想将其更改为您的 fork https://github.com/your-account/foo-lib.git然后在 git 项目类型的根目录中:

git submodule set-url external/foo-lib https://github.com/your-account/foo-lib.git

最新更新