Как использовать конкретную ревизию подмодуля Git для локальной ветки? - PullRequest
2 голосов
/ 29 марта 2012

У меня есть git-репо с dev и master веткой.Сейчас я пытаюсь использовать разные ревизии подмодуля в каждой ветке.Так, например, я делаю это:

git checkout master
cd submodule
git checkout v1.0
cd ..
git commit -a -m "now using submodule v1.0"
git checkout dev
cd submodule
git checkout v2.0
cd ..
git commit -a -m "let's try submodule v2.0"

Теперь после этого я извлекаю ветку master, и кажется, что подмодуль в ветке master также указывает на коммит v2.0 вместо v1.0.

Я много читал о подмодулях git, но мне все же это кажется немного абстрактным.Кто-нибудь может объяснить, как правильно использовать подмодуль в этом конкретном случае?(git version 1.7.3.1)

Спасибо!

1 Ответ

1 голос
/ 30 марта 2012

Простая смена веток в супер-проекте не изменит содержимого в подмодуле; изменение ветви только изменит ссылку на коммит супер-проекта для его подмодуля. Вам нужно сделать:

git submodule update

после проверки ветки в супер-проекте. «Обновление» изменит подмодуль для ссылки на соответствующий коммит. Вот пример:

ebg@taiyo(84)$ git checkout master
M test1
Switched to branch 'master'
ebg@taiyo(85)$ git submodule update
Submodule path 'test1': checked out '16aff6eed3998f14eb96b4f61666b47160de0e6b'
ebg@taiyo(89)$ git checkout top-other
M test1
Switched to branch 'top-other'
ebg@taiyo(90)$ git submodule update
Submodule path 'test1': checked out 'af33fca078dbb1fa415f9ea7fafb1b92cad1c6ae'
ebg@taiyo(91)$ git status
# On branch top-other
nothing to commit (working directory clean)
...