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