Ретроспективно добавьте рекурсию в репозиторий git

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

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

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

Ответ 1

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

git submodule update --init --recursive

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

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

Ответ 2

  • В корне вашего репо:

    $ git submodule update --init --recursive
    

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

  • Самый простой способ, с помощью которого я пытаюсь клонировать рекурсивно, по умолчанию будет теневым git clone с псевдонимом

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

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

Ответ 3

IIRC, git submodule init git submodule update

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