我的 git 项目中有一个子模块,我对其进行了一些更改,并将其上传到我自己的 git 服务器以对其进行分叉。我已将主 git 存储库中的源 URL 更改为新子模块的位置,并运行git submodule sync
以使我的.git/config
文件是最新的。然后我将所有内容推送到存储我的数据的 Bitbucket。但是,当我克隆我的主 git 存储库时,它仍在从旧位置拉取子模块的数据。知道可能导致这种情况发生的原因以及如何解决吗?当我克隆存储库时,它使我的分叉更改不会出现。
问问题
183 次
3 回答
1
一旦你修改了.gitmodules
文件, agit submodule sync
只会修改你的.git/config
,但不会改变任何内容.git/modules/yourSubmodule
这意味着一个简单git submodule update yourSubmodule
的仍然会使用存储在 中的 url .git/modules/yourSubmodule/config
,因此是“旧”url。
但如果你这样做:
git submodule update --init yourSubmodule
然后使用正确的.git/modules/yourSubmodule
新 url 再次初始化,并且子模块是从该新 url 克隆的。
为此,我更喜欢先从工作树中完全删除子模块。
# restore an empty yourSubmodule directory
rm -Rf yourSubmodule ; git checkout -- yourSubmodule
# update .gitmodules
git submodule sync
git submodule update --init yourSubmodule
于 2013-05-24T07:16:00.317 回答
1
很可能您的 .gitmodules 文件不正确。
如果您使用文本编辑器打开它,您将看到如下内容:
[submodule "externals/submodule"]
path = externals/submodule
url = git@github.com:Original/repo.git
将 url 更改为更新的位置,重新运行git submodule sync
,你应该很高兴。
于 2013-05-24T04:45:29.980 回答
0
.gitmodules
检查和中的 URL 设置your_submodule/.git/config
。
于 2013-05-24T04:39:01.690 回答