Я пытаюсь поместить субмодуль в репо. Проблема в том, что когда я клонирую родительский репозиторий, папка субмодуля полностью пуста.
Есть ли способ сделать так, чтобы git clone parent_repo
данные фактически помещались в папку субмодуля?
Например, http://github.com/cwolves/sequelize/tree/master/lib/ , nodejs-mysql-native
указывает на внешний мерзавца подмодуль, но когда я проверка на sequelize
проект, что папка пуста.
git
git-submodules
отметка
источник
источник
git clone --recurse-submodules --remote-submodules
(Q3 2019 Git 2.23): она будет клонировать и обновлять подмодули в одной команде. Смотрите мой отредактированный ответ ниже .Ответы:
С версией 2.13 Git и выше,
--recurse-submodules
можно использовать вместо--recursive
:Примечание редактора:
-j8
это дополнительная оптимизация производительности, которая стала доступной в версии 2.8 и позволяет одновременно получать до 8 субмодулей одновременно - смman git-clone
.С Git версии 1.9 до версии 2.12 (
-j
флаг доступен только в версии 2.8+):С Git версии 1.6.5 и выше вы можете использовать:
Для уже клонированных репозиториев или более старых версий Git используйте:
источник
master
?Вы должны сделать две вещи перед заполнением подмодуля:
источник
git-submodule(1)
страницу руководства ( kernel.org/pub/software/scm/git/docs/git-submodule.html ). Вы узнаете, чтоgit submodule update
поддерживает хороший параметр с именем--recursive
.git submodule update --init
(Также см. Мой ответ ).Git 2.23 (Q3 2019): если вы хотите клонировать и обновить подмодули до последней версии:
Если вы просто хотите клонировать их на записанном SHA1:
См. ниже.
Оригинальный ответ 2010
Как упоминает joschi в комментариях,
git submodule
теперь поддерживает эту--recursive
опцию (Git1.6.5 и более).См. Работа с субмодулями git рекурсивно для части инициализации.
Смотрите
git submodule
объяснил больше.Обновление 2016 года с git 2.8: см. « Как ускорить / распараллелить загрузку подмодулей git с помощью
git clone --recursive
? »Вы можете начать выборку подмодуля, используя несколько потоков, параллельно.
Например:
Более того, с Git 2.23 (Q3 2019) вы можете клонировать и извлекать субмодуль в их ветку трекинга одной командой!
См. Коммит 4c69101 (19 мая 2019 г.) Бен Ависона (
bavison
) .(Слиты Junio C Hamano -
gitster
- в фиксации 9476094 , 17 июн 2019)Это значит:
источник
git submodule update --init --recursive --remote
должны обновить их до последней версии соответствующей ветки. (напр .: stackoverflow.com/a/56981834/6309 )clone --recurse-submodules --remote-submodules
ниsubmodule update --init --recursive --remote
) не позволила мне на самом деле получить подпункты. Все, что я получаю, это файл .gitmodules, и я не смог найти никакого способа инициализировать подпункты, кроме как вручную клонировать их один за другим. Я хотел бы по крайней мере иметь сценарий, чтобы сделать это сsubmodule foreach
...[Быстрый ответ]
Вы можете использовать эту команду для клонирования вашего репо со всеми подмодулями:
Или, если вы уже клонировали проект, вы можете использовать:
источник
Если ваш подмодуль был добавлен в ветку, обязательно включите его в команду клонирования ...
источник
Попробуй это:
Он автоматически извлекает данные субмодуля, если вы уже добавили субмодули в родительский проект.
источник
--recurse-submodules
и--recursive
являются эквивалентными псевдонимами .git submodule update --init --recursive
как объяснено в этом ответеЯ думаю, что вы можете пойти с 3 шага:
источник
поздний ответ
Как я только что провел целый час, возясь с другом: даже если у вас есть права администратора на BitBucket, всегда клонируйте ОРИГИНАЛЬНЫЙ репозиторий и используйте пароль того, кто владеет репо. Раздражает, когда узнаешь, что ты наткнулся на этот минетрап: P
источник
Попробуйте это для включения подмодулей в репозиторий git.
или
источник
Вы можете использовать
--recursive
флаг при клонировании репозитория. Этот параметр заставляет git клонировать все определенные подмодули в хранилище.После клонирования ветки подмодулей иногда могут быть изменены, поэтому выполните следующую команду:
источник
[Быстрый ответ]
После клонирования родительского репо (который содержал некоторое субмодульное репо), сделайте следующее:
источник
Параллельная выборка подмодулей направлена на сокращение времени, необходимого для выборки репозиториев и всех связанных с ним подмодулей, путем одновременной выборки нескольких репозиториев. Это можно сделать с помощью новой опции --jobs, например:
По словам команды Git, это может существенно ускорить обновление репозиториев, которые содержат много подмодулей. При использовании --recurse-submodules без новой опции --jobs Git будет извлекать подмодули один за другим.
Источник: http://www.infoq.com/news/2016/03/git28-released
источник
У меня была такая же проблема для репозитория GitHub. В моем аккаунте отсутствовал ключ SSH. Процесс
Затем вы можете клонировать репозиторий с помощью подмодулей (
git clone --recursive YOUR-GIT-REPO-URL
).или
Запустить
git submodule init
иgit submodule update
извлечь субмодули в уже клонированном репозитории.источник
Permission denied (publickey). fatal: Could not read from remote repository.
ошибкаПопробуй это.
Если вы добавили субмодуль в ветку, убедитесь, что вы добавили его в команду клонирования.
источник
Если это новый проект, просто вы можете сделать так:
Если он уже установлен, чем:
источник