git submodule foreach git pull origin master 与 git pull --recursive-submodules

git submodule foreach git pull origin master 与 git pull --recursive-submodules

我管理着一个包含多个子模块的存储库。一段时间以来,我一直在使用

$ git submodule foreach git pull origin master

为所有这些人引入最新的更改。然而,最近我了解到

$ git pull --recurse-submodules

并尝试了一下,但似乎只获取了更改,因此您需要

$ git submodule update --recursive

以便实际签出更改。但是,尽管子模块明确提取了更改,但最后这一点似乎对我的存储库没有任何作用。我还注意到我的子模块被签出到某个提交,而不是主分支或任何分支。

  1. 我是不是做错了什么?
  2. foreach或者这是我过去做事方式的产物?
  3. 我怎样才能修复它pull --recurse-submodulessubmodule update --recursive使其按预期工作?

答案1

git submodule update --recursive正在更新子模块以匹配父存储库中的提交。因此,您需要向父存储库提交更改,该命令才能执行任何操作。

使用此设置:

/proj/.git
/proj/module/.git

您在“模块”中做出更改,提交并推送它们。在“项目”中,您提交模块(它只显示子模块提交哈希值的变化)。

现在,当您拉取并更新子模块时,它将更新“模块”以使用新的提交。

相关内容