Git子模块新版本更新

时间:2013-06-19 14:35:38

标签: git git-submodules

我已经分叉了MapBox-ios-sdk并对其进行了一些更改。更新版的sdk就在这里,我将更改合并到了fork中。 MapBox-ios-sdk还包含SMCalloutView,它是MapBox-ios-sdk中的子模块。然而,官方sdk的版本使用了更新的,更新的SMCalloutView,它不在我的分支中。

如何更新

我使用here的说明更新了我的sdk。但是,这不会更新SMCalloutView。我也在MapBox-ios-sdk级别尝试了git submodule update --recursive,没有任何反应。事实证明,这是因为SMCallOutView处于“无分支”状态。为什么它在“没有分支”?如何将所有子模块置于“无分支”状态之外?如果它处于“无分支”,那么我永远不知道子模块(或甚至更多嵌套)的哪个子模块或子模块需要更新。

1 个答案:

答案 0 :(得分:18)

使用git 1.8.2+(2013年3月),您可以定义一个子模块,该子模块将反映给定分支的最新提交。
请参阅“git submodule tracking latest”。

这意味着将子模块更新到最新的分支就足够了:

# --remote will also fetch and ensure that
# the latest commit from the branch is used
git submodule update --remote

有关--remote选项的更多信息,请参阅git repo commit 06b1ab


回顾一下:

  • 对于新的子模块(必须遵循分支)

    git submodule add -b [branch] [URL] [DirectoryName]
    
  • 对于您现在希望它遵循分支的现有子模块
    另请参阅git repo commit b92892,将git子模块转换为跟随分支的子模块 您所需要做的就是:

    git config -f .gitmodules submodule.<path>.branch <branch>
    

    点击“Git submodules: Specify a branch/tag

  • 了解详情