Ответ 1
Как уже упоминалось в предыдущем ответе git submodule update
, эта команда проверяет конкретную версию проекта, основываясь на файле .gitmodules
.
Это важный момент для подмодулей: вы записываете их как точную фиксацию theyre at.
Вы можете видеть, на какую фиксацию ссылается запуск в "суперпроекте" (тот, который ссылается на один или несколько подмодулей):
-
git submodule status
(за исключением случаев, когда вы совершили какое-либо действие непосредственно в этом подмодуле, в случае тонкой обработки он покажет "+
" передSHA-1
HEAD
любого подмодуля, который продвинулся изSHA-1
хранится в суперпроекте) или -
git ls-files --stage
ищет запись в режиме "160000", специальную запись в индексе Git.
Это означает, что каждый раз, когда вы выполняете команду Git в "суперпроекте", который может изменить этот субмодуль, совершить SHA1, вам понадобится "git submodule update
".
Нужно ли мне обновлять подмодуль "git" только тогда, когда я сначала клонировал суперпроект, или после каждого вытягивания подмодуля (из собственного репо)?
Да, вы должны делать это каждый раз, когда вы снижаете изменение подмодуля в главном проекте.
Это связано с тем, что вы ссылаетесь на точный фиксатор исходного репозитория подмодуля (как сказано выше), и когда вы вытягиваете это репо, вы эффективно изменяете эту фиксацию.