Git обновление новой версии подмодуля
Я разблокировал 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 отслеживание подмодуля последних.
Это означает, что этого достаточно, чтобы обновить подмодуль до последней ветки:
# --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 подмодулей: укажите ветку/тег"