我的git项目中有一个子模块,我已对其进行了一些更改,并上传到我自己的git服务器以进行分叉。我已将主git存储库中的源URL更改为新子模块的位置,并运行git submodule sync
以使我的.git/config
文件是最新的。然后我把所有东西都推到Bitbucket,我的数据存储在那里。但是,当我克隆我的主git存储库时,它仍然从旧位置下拉子模块的数据。知道可能导致这种情况发生的原因以及如何解决这个问题?当我克隆存储库时,我的分叉更改不会出现。
答案 0 :(得分:1)
您的.gitmodules文件很可能不正确。
如果您使用文本编辑器打开它,您将看到如下内容:
[submodule "externals/submodule"]
path = externals/submodule
url = git@github.com:Original/repo.git
将网址更改为更新后的位置,重新运行git submodule sync
,您应该好好去。
答案 1 :(得分:0)
检查.gitmodules
和your_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