Pregunta ¿Cómo hacer `git clone` incluyendo submódulos?


Estoy tratando de poner un submódulo en un repositorio.

El problema es que cuando clono el repositorio principal, la carpeta del submódulo está completamente vacía.

¿Hay alguna forma de hacerlo para que 'git clone parent' realmente coloque los datos en la carpeta del submódulo?

ejemplo: http://github.com/cwolves/sequelize/tree/master/lib/

nodejs-mysql-native está apuntando a un git externo, pero cuando pago la sequelize proyecto, esa carpeta está vacía ...


1462
2017-09-26 07:13


origen


Respuestas:


Con la versión 2.13 de Git y más tarde, --recursive ha sido desaprobado y --recurse-submodules debería usarse en su lugar:

git clone --recurse-submodules -j8 git://github.com/foo/bar.git
cd bar

Nota del editor: -j8 es una optimización de rendimiento opcional que estuvo disponible en la versión 2.8, y obtiene hasta 8 submódulos a la vez en paralelo - ver man git-clone.

Con la versión 1.9 de Git hasta la versión 2.12 (-j bandera disponible solo en la versión 2.8+):

git clone --recursive -j8 git://github.com/foo/bar.git
cd bar

Con la versión 1.6.5 de Git y posterior, puede usar:

git clone --recursive git://github.com/foo/bar.git
cd bar

Para repositorios ya clonados, o versiones anteriores de Git, use:

git clone git://github.com/foo/bar.git
cd bar
git submodule update --init --recursive

2307
2017-12-14 10:43



Tienes que hacer dos cosas antes de que se llene un submódulo:

git submodule init 
git submodule update

352
2017-09-26 07:19



Respuesta original 2010

Como joschi menciona en los comentarios, git submodule ahora es compatible con --recursive opción (Git1.6.5 y más).

Si --recursive se especifica, este comando se repetirá en los submódulos registrados y actualizará cualquier submódulo anidado dentro.

Ver Trabajando con submódulos de git recursivamente para la parte init
Ver git submodule explicado para más.

Con la versión 1.6.5 de git y posterior, puedes hacer esto automáticamente clonando el superproyecto con el –-recursive opción:

git clone --recursive git://github.com/mysociety/whatdotheyknow.git

Actualización 2016, con git 2.8: ver "Cómo acelerar / paralelizar las descargas de submódulos de git usando git clone --recursive?"

Puede iniciar la búsqueda del submódulo utilizando múltiples hilos, en paralelo.
Por instancias:

git fetch --recurse-submodules -j2

140
2017-09-26 08:17



Puede usar este comando para clonar su repositorio con todos los submódulos:

git clone --recursive YOUR-GIT-REPO-URL

O si ya clonó el proyecto, puede usar:

git submodule init
git submodule update

31
2017-10-16 15:47



Si su submódulo fue agregado en una rama, asegúrese de incluirlo en su comando de clonación ...

git clone -b <branch_name> --recursive <remote> <directory>

27
2018-03-07 22:28



Prueba esto:

git clone --recurse-submodules

Tira automáticamente de los datos del submódulo asumiendo que ya ha agregado los submódulos al proyecto principal.


21
2018-01-16 18:39



respuesta tardía

// git CLONE INCLUDE-SUBMODULES ADDRESS DESTINATION-DIRECTORY
git clone --recursive https://USERNAME@bitbucket.org/USERNAME/REPO.git DESTINATION_DIR

Como acabo de pasar toda una hora jugueteando con un amigo: incluso si tiene derechos de administrador en BitBucket, siempre clone el repositorio ORIGINAL y use la contraseña de quien posee el repositorio. Molesto descubrir que te topaste con esta mina: P


17
2018-02-16 16:10



La búsqueda paralela de los módulos busca reducir el tiempo requerido para recuperar repositorios y todos sus submódulos al permitir la búsqueda de múltiples repositorios a la vez. Esto se puede lograr utilizando la nueva opción --jobs, por ejemplo:

git fetch --recurse-submodules --jobs=4

Según el equipo de Git, esto puede acelerar considerablemente la actualización de repositorios que contienen muchos submódulos. Al usar --recurse-submodules sin la nueva opción --jobs, Git obtendrá los submódulos uno por uno.

Fuente: http://www.infoq.com/news/2016/03/git28-released


7
2018-04-06 12:07



Intenta esto para incluir submódulos en el repositorio de git.

git clone -b <branch_name> --recursive <remote> <directory>

o

git clone --recurse-submodules

7
2018-02-05 04:54