6

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

我如何让它更新

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

4

1 回答 1

19

使用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

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


回顾一下:

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

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

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

    在“ Git 子模块:指定分支/标签”中查看更多信息

于 2013-06-19T19:37:54.597 回答