Как проверить конкретную версию подмодуля с помощью git submodule?

Ответы:

167

Репозитории подмодулей остаются в отдельном состоянии HEAD, указывая на конкретную фиксацию. Изменение этой фиксации просто включает проверку другого тега или фиксации, а затем добавление изменения в родительский репозиторий.

$ cd submodule
$ git checkout v2.0
Previous HEAD position was 5c1277e... bumped version to 2.0.5
HEAD is now at f0a0036... version 2.0

git-status в родительском репозитории теперь будет сообщать о грязном дереве:

# On branch dev [...]
#
#   modified:   submodule (new commits)

Добавьте каталог подмодуля и зафиксируйте, чтобы сохранить новый указатель.

joemaller
источник
14
Могут ли другие пользователи проверять ту же версию подмодуля в будущем после того, как я зафиксировал родительское репо с определенной веткой / версией подмодуля? Или их снова нужно указывать вручную?
QZHua
@QZHua: Я сам экспериментировал с этим, и кажется, что идентификатор фиксации подмодуля сохраняется при клонировании родителя.
Psychonaut
37

Шаг 1: Добавьте подмодуль

   git submodule add git://some_repository.git some_repository

Шаг 2. Зафиксируйте подмодуль для конкретной фиксации

По умолчанию новый подмодуль будет отслеживать HEAD основной ветки, но он НЕ будет обновляться по мере обновления вашего основного репозитория. Чтобы изменить подмодуль для отслеживания конкретной фиксации или другой ветки, смените каталог на папку подмодуля и переключите ветки так же, как и в обычном репозитории.

   git checkout -b some_branch origin/some_branch

Теперь подмодуль закреплен на ветке разработки вместо HEAD мастера.

От двух спорящих парней - привяжите подмодули Git к конкретному коммиту или ветке .

fsenart
источник
20
Это проще в использованииgit submodule add -b some_branch git://some_repository.git some_repository
Caumons
15
На данный момент не похоже, что git submodule add -bможет принимать теги или sha1hash. Можно только ветку взять.
CMCDragonkai
Есть ли для этого проблема в системе отслеживания проблем Git? Кто-нибудь любезно разместит URL-адрес, чтобы мы могли его отслеживать? Спасибо.
colan
Инструкции @colan по сообщению об ошибках находятся на git-scm.com/community . Но -bвспомогательные ветки, а не теги или фиксация shas - это функция, а не ошибка (на самом деле -bэто сокращение --branch).
Генри
1
Вздох. По прошествии всех этих лет у них все еще нет общедоступного трекера проблем.
colan