Mój projekt
ProjectA
-FrameworkA (submodule)
--Twig (submodule of FrameworkA)
Jak mogę aktualizować submoduły rekurencyjnie? Próbowałem już niektórych poleceń git (na ProjectA root)
git submodule foreach git pull origin master
lub
git submodule foreach --recursive git pull origin master
ale nie można pobrać plików Twig.
git
git-submodules
skompletować
źródło
źródło
Odpowiedzi:
Prawdopodobnie będziesz również chciał skorzystać z opcji --init, która spowoduje, że zainicjuje ona wszelkie niezainicjowane podmoduły:
Uwaga: w niektórych starszych wersjach Git , jeśli użyjesz tej
--init
opcji, już zainicjalizowane submoduły mogą nie zostać zaktualizowane. W takim przypadku należy również uruchomić polecenie bez--init
opcji.źródło
--init
są używane, nie pasuje do moich doświadczeń z Git 2.2.2. Widzę zarówno moduły najwyższego poziomu, jak i zagnieżdżone, które zostały już zainicjowane, sprawdzając poprawność zatwierdzenia, kiedy używamgit submodule update --init --recursive
, i uważam, że twierdzenie, że musisz uruchomić polecenie zi bez,--init
jest po prostu błędne. O ile ktoś nie będzie w stanie wykazać, że jest to zachowanie, ani wykazać, że zmieniło się ono między wersjami i kiedyś było prawdą, planuję je całkowicie edytować.Sposób, w jaki korzystam to:
źródło
git submodule foreach git pull --ff-only origin master
git submodule foreach --recursive 'git commit -a | :'
.:
Sprawia, że pętla niezależnie od wyniku. Zobacz łącza stackoverflow.com/questions/19728933/... .Ponieważ może się zdarzyć, że domyślna gałąź twoich submodułów nie jest
master
(co zdarza się często w moim przypadku), w ten sposób automatyzuję pełne aktualizacje Git modułów:źródło
Entering 'Core' fatal: ambiguous argument 'origin/HEAD': unknown revision or path not in the working tree.
gdzieCore
jest submodułW ostatnim Git (używam wersji 2.15.1) następujące rekurencyjnie scalą zmiany podmodułu w submoduły:
Możesz dodać,
--init
aby zainicjować dowolne niezainicjowane submoduły i użyć,--rebase
jeśli chcesz dokonać zmiany bazy zamiast scalania.Następnie musisz zatwierdzić zmiany:
źródło
git submodule update --remote my-dir/my-submodule
działa równie dobrze