以递归方式更新git子模块

时间:2014-10-01 22:11:31

标签: git github git-submodules github-for-mac

也许这是一个愚蠢的问题,但我似乎无法解决这个问题。

我有一个包含3个子模块的存储库,其中一个是子子模块。 这三个子模块都是GitHub上的第三方开源项目。

结构:

My Project
L SubmoduleA
L SubmoduleB
  L SubmoduleC

如何在GitHub上将所有三个子模块更新为最新的可用提交(在主分支上)?

编辑:我当然不希望得到SubmoduleC最新提交,但是SubmoduleB中引用的 。对SubmoduleB的更新,这会发生很大变化。

1 个答案:

答案 0 :(得分:0)

由于每个repo引用给定子模块的特定SHA1,因此您无法更新这些子模块而无需将它们推送到各自的repos以记录新的SHA1。

您需要控制他们的.gitmodules文件,以便记录您希望这些子模块遵循某个分支的事实,您可以按照我在" Git submodules: Specify a branch/tag&#中的说明进行操作34。

如果那些repos和子模块以这种方式配置,那么一个简单的git submodule update --remote --recursive会将所有子模块更新为各自的分支HEAD。

但是你可以控制这些子模块内容的唯一方法就是fork their repos并将你的项目引用作为子模块的子模块(你拥有的,你可以推回到的那些)。