Git submodule обновление новой версии

Я раздвоил MapBox-ios-sdk и внес в него некоторые изменения. Более новый выпуск SDK уже здесь, и я слил свои изменения в свой форк. MapBox-ios-sdk также включает SMCalloutView, который является подмодулем в MapBox-ios-sdk. Однако версия официального SDK использует более новый, обновленный SMCalloutView, которого нет в моем форке.

Как мне его обновить?

Я обновляю свой SDK с инструкциями отсюда. Однако это не обновляет SMCalloutView. Я тоже пробовал git submodule update --recursive на уровне MapBox-ios-sdk и ничего не происходит. Как выясняется, это потому, что SMCallOutView находится в "нет ветви". Почему это в "нет филиала"? Как вывести весь подмодуль из состояния "нет ветки"? Если это не ветка, то я никогда не узнаю, какой подмодуль или подмодуль подмодуля (или даже больше вложенный) нуждается в обновлении.

1 ответ

Решение

С помощью git 1.8.2+ (март 2013 г.) вы можете определить подмодуль, который будет отражать последний коммит данной ветви.
Смотрите " Git Submodule для отслеживания последних ".

Это означает, что этого будет достаточно, чтобы обновить подмодуль до последней ветки:

# --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 submodules: укажите ветку / тег "

Другие вопросы по тегам