Forked GIT子模块,并更改了源URL。但克隆仍然拉旧源URL?

时间:2013-05-24 03:07:55

标签: git version-control git-submodules git-clone

我的git项目中有一个子模块,我已对其进行了一些更改,并上传到我自己的git服务器以进行分叉。我已将主git存储库中的源URL更改为新子模块的位置,并运行git submodule sync以使我的.git/config文件是最新的。然后我把所有东西都推到Bitbucket,我的数据存储在那里。但是,当我克隆我的主git存储库时,它仍然从旧位置下拉子模块的数据。知道可能导致这种情况发生的原因以及如何解决这个问题?当我克隆存储库时,我的分叉更改不会出现。

3 个答案:

答案 0 :(得分:1)

您的.gitmodules文件很可能不正确。

如果您使用文本编辑器打开它,您将看到如下内容:

[submodule "externals/submodule"]
    path = externals/submodule
    url = git@github.com:Original/repo.git

将网址更改为更新后的位置,重新运行git submodule sync,您应该好好去。

答案 1 :(得分:0)

检查.gitmodulesyour_submodule/.git/config中的网址设置。

答案 2 :(得分:0)

修改.gitmodules文件后,git submodule sync只会修改您的.git/config,但不会改变.git/modules/yourSubmodule中的任何内容

这意味着简单git submodule update yourSubmodule仍会使用 .git/modules/yourSubmodule/config 中存储的网址,因此“#{网址。

但如果你这样做:

git submodule update --init yourSubmodule

然后 .git/modules/yourSubmodule再次初始化,使用正确的新网址,子模块是来自该新网址的克隆。

为了实现这一目标,我希望首先完全删除工作树中的子模块

# restore an empty yourSubmodule directory
rm -Rf yourSubmodule ; git checkout -- yourSubmodule
# update .gitmodules
git submodule sync
git submodule update --init yourSubmodule