37

我创建了一个项目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

4

2 回答 2

66

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

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

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

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

假设您在 origin 的目录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

于 2021-02-06T01:22:30.837 回答