Git 2.23 (III kwartał 2019): jeśli chcesz sklonować i zaktualizować submoduły do ich najnowszej wersji:
git clone --recurse-submodules --remote-submodules
Jeśli chcesz je tylko sklonować na nagranym SHA1:
git clone --recurse-submodules
Patrz poniżej.
Oryginalna odpowiedź 2010
Jak joschi wspomina w komentarzach, git submodule
obsługuje teraz --recursive
opcję (Git1.6.5 i więcej).
Jeśli --recursive
jest określony, to polecenie będzie się powtarzało w zarejestrowanych podmodułach i aktualizuje wszystkie zagnieżdżone podmoduły w nim.
Zobacz Praca rekurencyjnie z podmodułami git dla części początkowej.
Zobacz git submodule
wyjaśnienie, aby uzyskać więcej.
W wersji 1.6.5 git i nowszych możesz to zrobić automatycznie, klonując super-projekt z –-recursive
opcją:
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
Aktualizacja 2016 z git 2.8: patrz „ Jak przyspieszyć / zrównoleglić pobieranie podmodułów git za pomocą git clone --recursive
? ”
Możesz zainicjować pobieranie submodułu przy użyciu wielu wątków równolegle.
Na przykład:
git fetch --recurse-submodules -j2
Co więcej, dzięki Git 2.23 (III kwartał 2019 r.) Możesz klonować i pobierać moduły podrzędne do ich gałęzi śledzenia za pomocą jednego polecenia!
Zobacz zatwierdzenie 4c69101 (19 maja 2019 r.), Autor: Ben Avison ( bavison
) .
(Połączone przez Junio C Hamano - gitster
- w commit 9476094 , 17 czerwca 2019)
clone
: dodaj --remote-submodules
flagę
Podczas używania git clone --recurse-submodules
wcześniej nie było możliwości przekazania --remote
przełącznika do domyślnej git submodule update
komendy dla dowolnego przypadku użycia, w którym chcesz, aby submoduły były sprawdzane w ich gałęzi zdalnego śledzenia, a nie z SHA-1 zarejestrowanym w superprojekcie.
Ta poprawka naprawia tę sytuację.
To faktycznie przechodzi --no-fetch
się git submodule update
także na gruncie one modułem dopiero sklonowano, więc ściągam z pilota ponownie służy jedynie spowolnić.
To znaczy:
--[no-]remote-submodules:
Wszystkie sklonowane submoduły będą używać statusu gałęzi zdalnego śledzenia submodułu do aktualizacji submodułu, a nie zarejestrowanego SHA-1 superprojektu. Odpowiednik przejścia --remote
do git submodule update
.
git clone --recurse-submodules --remote-submodules
(G3 2.23): sklonuje i zaktualizuje submoduły w jednym poleceniu. Zobacz moją zredagowaną odpowiedź poniżej .