Minha estrutura de projeto
ProjectA
-FrameworkA (submodule)
--Twig (submodule of FrameworkA)
Como posso atualizar submódulos recursivamente? Eu já tentei alguns comandos git (na raiz do ProjectA)
git submodule foreach git pull origin master
ou
git submodule foreach --recursive git pull origin master
mas não pode extrair arquivos do Twig.
git
git-submodules
complez
fonte
fonte
Respostas:
Você provavelmente também desejará usar a opção --init, que fará com que seja inicializado qualquer sub-módulo não inicializado:
Nota: em algumas versões mais antigas do Git , se você usar a
--init
opção, os submódulos já inicializados podem não ser atualizados. Nesse caso, você também deve executar o comando sem--init
opção.fonte
--init
usados não corresponde às minhas experiências no Git 2.2.2. Vejo os submódulos de nível superior e aninhados que já foram inicializados recebendo a confirmação correta quando usogit submodule update --init --recursive
, e acho que a reivindicação de que você precisa executar o comando com e sem--init
está simplesmente errada. A menos que alguém possa mostrar evidências de que esse é o comportamento ou demonstrar que ele mudou entre as versões e já foi verdade, planejo editá-lo completamente.O jeito que eu uso é:
fonte
git submodule foreach git pull --ff-only origin master
git submodule foreach --recursive 'git commit -a | :'
. O:
faz loop independentemente do resultado. Consulte o link stackoverflow.com/questions/19728933/… .Como pode acontecer que a ramificação padrão dos seus sub-módulos não seja
master
(o que acontece muito no meu caso), é assim que automatizo as atualizações completas dos sub-módulos do Git:fonte
Entering 'Core' fatal: ambiguous argument 'origin/HEAD': unknown revision or path not in the working tree.
ondeCore
é o submoduleNo Git recente (estou usando a v2.15.1), o seguinte mesclará as alterações do sub-módulo upstream nos sub-módulos recursivamente:
Você pode adicionar
--init
para inicializar qualquer sub-módulo não inicializado e usá---rebase
lo se desejar rebase em vez de mesclar.Você precisa confirmar as alterações posteriormente:
fonte
git submodule update --remote my-dir/my-submodule
funciona