Git 2.23 (Q3 2019): якщо ви хочете клонувати та оновлювати підмодулі до їх останньої редакції:
git clone --recurse-submodules --remote-submodules
Якщо ви просто хочете їх клонувати на записаному SHA1:
git clone --recurse-submodules
Дивись нижче.
Оригінальна відповідь 2010 року
Як згадує joschi в коментарях, git submodule
тепер підтримується --recursive
варіант (Git1.6.5 і більше).
Якщо --recursive
вказано, ця команда повторно повториться у зареєстрованих підмодулях та оновить будь-які вкладені підмодулі в межах.
Див. Розділ Робота з підмодулями git рекурсивно для частини init.
Див git submodule
пояснені більш.
З версією 1.6.5 git і пізнішої версії ви можете це зробити автоматично, клонувавши суперпроект з –-recursive
можливістю:
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
Оновлення 2016, з git 2.8: див. " Як прискорити / паралелізувати завантаження підмодулів git за допомогою git clone --recursive
? "
Ви можете ініціювати отримання підмодуля, використовуючи паралельно декілька потоків.
Для прикладів:
git fetch --recurse-submodules -j2
Ще краще, що за допомогою Git 2.23 (Q3 2019) ви можете клонувати та перевіряти підмодуль до їх гілки відстеження в одній команді!
Див. Комітет 4c69101 (19 травня 2019 р.) Від Бена Евісона ( bavison
) .
(Об'єднано Хуніо С Хамано - gitster
- у комітеті 9476094 , 17 червня 2019 р.)
clone
: додати --remote-submodules
прапор
При використанні git clone --recurse-submodules
раніше не було можливості передавати --remote
перемикач на неявну git submodule update
команду для будь-якого випадку використання, коли ви хочете, щоб підмодулі були перевірені на їх відділенні віддаленого відстеження, а не з SHA-1, записаним у надпроекті.
Цей пластир виправляє цю ситуацію.
Це на самому справі проходить --no-fetch
в git submodule update
а на тій підставі , що вони подмодуль тільки що був клонований, тому вибірка з віддаленого знову служить тільки сповільнити хід подій.
Це означає:
--[no-]remote-submodules:
Усі підмодулі, які клоновані, використовуватимуть стан віддаленого відстеження підмодуля для оновлення підмодуля, а не записаний суперпроектом SHA-1. Еквівалентний переходу --remote
до git submodule update
.
git clone --recurse-submodules --remote-submodules
(Q3 2019 Git 2.23): вона буде клонувати та оновлювати підмодулі в одній команді. Дивіться мою відредаговану відповідь нижче .