Ретроспективно добавьте --recursive к git-репо - PullRequest
58 голосов
/ 23 ноября 2010

Если вы git clone с --recursive, вы также можете получить все подмодули git.

Если я забыл добавить этот магический флаг при клонировании, как это может случиться, как мне теперь перейтии получить какие-либо подмодули?

Кроме того, как я могу установить рекурсивный флаг в качестве значения по умолчанию для будущих клонов?

Ответы [ 4 ]

72 голосов
/ 24 ноября 2010

Вы можете сделать это после простого клона верхнего уровня:

git submodule update --init --recursive

Я бы не рекомендовал делать клон по умолчанию. Правильный способ сделать это, если вы активно используете подмодули для разработки, а не просто подключаетесь к сторонним библиотекам OSS на github, которые вы можете обновить один раз в голубой луне, - это использовать git slave или поддерево .

Надеюсь, это поможет.

10 голосов
/ 24 ноября 2010
  1. Из корня репо:

    $ git submodule update --init --recursive
    

    Это обновит все зарегистрированные подмодули, при необходимости инициализируя их значением, указанным в файле .gitmodules, а также превратившись в сложные подмодули (с собственными подмодулями), а также инициализирует и обновит их.

  2. Самый простой способ сделать клонирование по умолчанию рекурсивным способом - это теневое git clone с псевдонимом

    $ git config --global alias.clone = 'clone --recursive'
    

    Что касается добавления опций всегда, я думаю, что это идиоматический метод.

1 голос
/ 23 ноября 2010

IIRC, git submodule init, git submodule update

К сожалению, я не вижу возможности включить рекурсив по умолчанию.

0 голосов
/ 28 января 2014

Похоже, вы не можете переопределить «клон» с помощью псевдонима «клон», поэтому это новый псевдоним (решение Abizern) или «--recursive».

Можно ли переопределить команду git псевдонимом git?

...