подмодуль git foreach мастер происхождения git pull против git pull --recursive-submodules

3

Я управляю хранилищем с несколькими подмодулями. Некоторое время сейчас я использую

$ git submodule foreach git pull origin master

чтобы внести последние изменения для всех этих парней. Однако недавно я узнал о

$ git pull --recurse-submodules

и дал ему попробовать, но кажется, что изменения только извлекаются, так что вам нужно

$ git submodule update --recursive

для того, чтобы на самом деле оформить изменения. Тем не менее, этот последний, похоже, ничего не делает в моем хранилище, несмотря на то, что подмодули явно вызывают изменения. Я также заметил, что мои подмодули извлекаются для некоторого коммита вместо master или какой-либо другой ветви.

  1. Я делаю что-то неправильно?
  2. Или это артефакт того, что foreachя делал?
  3. Как мне все исправить, pull --recurse-submodulesи submodule update --recursiveработать как положено?
Ncat
источник

Ответы:

1

git submodule update --recursiveобновляет субмодули в соответствии с коммитом в родительском репо. Поэтому вам нужно зафиксировать изменения в родительском репо, чтобы эта команда могла что-либо сделать.

С этой настройкой:

/proj/.git
/proj/module/.git

Вы вносите изменения в «модуль», фиксируете и нажимаете их. В «proj» вы фиксируете модуль (он просто показывает изменение хеша подмодуля).

Теперь, когда вы извлекаете и обновляете субмодуль, он обновляет «модуль» для использования нового коммита.

idbrii
источник