0

如果父存储库有许多子模块。父存储库是否存储子模块的当前提交?

当我在全新安装的父存储库上签出父存储库时,它似乎没有部署子模块的最新版本。

盒子启动时使用的克隆命令是。

git clone --recursive repo_url folder
4

2 回答 2

1

父存储库存储每个子模块的提交哈希,而不是子模块本身的代码。当您递归地克隆父级时,它将克隆子模块直到该提交。这实际上是一件好事,因为您不希望 git 拉取较新版本的子模块,因为您的父级可能与它不兼容。

要更新子模块,您必须明确地进行:

cd submoduledir/
git pull origin master
cd ..
git status

然后提交更新的子模块:

git add submoduledir
git commit -m "Update submodule"

如果您要从已更新子模块的主节点更新本地副本,请执行以下操作:

git pull origin master
git submodule update --recursive
于 2013-06-21T16:35:16.720 回答
0

它不存储它,而是只知道哪个提交具有子模块当前所在的位置和位置。检查这个

要获取最新的子模块,请使用:

git submodule foreach --recursive 'echo `git checkout master`'
git submodule foreach --recursive 'echo `git pull`'

假设您希望所有子模块都在master分支中。

为了保存状态提交它。

于 2013-06-21T16:41:22.437 回答