Git Обновление подмодуля необходимо только изначально?

Я получаю подмодуль git (принятие желаемого за действительное?), и я придумываю более конкретные вопросы, что является хорошим знаком...

Я попытался найти ту версию подмодуля, на которую ссылается суперпроект, в .gitmodules и .git/config, но там ничего не упоминается...
Сценарий заключается в том, что я изменяю подмодули в своих корневых местах (откуда они импортируются), а затем потянув их туда, где они "подмодулированы"...
Помимо того, что для совершения суперпроекта для включения этих изменений в репроект суперпроекта, мне также нужно сделать "git update", чтобы зарегистрировать новый, потянутый в подмодулирование?

В основном возникает вопрос:

Мне нужно "git submodule update" только тогда, когда я сначала клонирую суперпроект, или после каждого вытягивания подмодуля (из собственного репо)?

Спасибо

Ответы

Ответ 1

Как уже упоминалось в предыдущем ответе git submodule update, эта команда проверяет конкретную версию проекта, основываясь на файле .gitmodules.

Страница GitPro настаивает:

Это важный момент для подмодулей: вы записываете их как точную фиксацию theyre at.

Вы можете видеть, на какую фиксацию ссылается запуск в "суперпроекте" (тот, который ссылается на один или несколько подмодулей):

  • git submodule status (за исключением случаев, когда вы совершили какое-либо действие непосредственно в этом подмодуле, в случае тонкой обработки он покажет "+" перед SHA-1 HEAD любого подмодуля, который продвинулся из SHA-1 хранится в суперпроекте) или
  • git ls-files --stage ищет запись в режиме "160000", специальную запись в индексе Git.

Это означает, что каждый раз, когда вы выполняете команду Git в "суперпроекте", который может изменить этот субмодуль, совершить SHA1, вам понадобится "git submodule update".

Нужно ли мне обновлять подмодуль "git" только тогда, когда я сначала клонировал суперпроект, или после каждого вытягивания подмодуля (из собственного репо)?

Да, вы должны делать это каждый раз, когда вы снижаете изменение подмодуля в главном проекте.
Это связано с тем, что вы ссылаетесь на точный фиксатор исходного репозитория подмодуля (как сказано выше), и когда вы вытягиваете это репо, вы эффективно изменяете эту фиксацию.