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

2594
Ncat

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

$ 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работать как положено?
3

1 ответ на вопрос

1
idbrii

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

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

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

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

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

Похожие вопросы