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 manera de hacerlo para que git clone parent_repo
realmente ponga datos en la carpeta del submódulo?
Por ejemplo, http://github.com/cwolves/sequelize/tree/master/lib/ , nodejs-mysql-native
apunta a un submódulo git externo, pero cuando finalizo la compra del sequelize
proyecto, esa carpeta está vacía.
git
git-submodules
marca
fuente
fuente
git clone --recurse-submodules --remote-submodules
(Q3 2019 Git 2.23): clonará y actualizará los submódulos en un comando. Vea mi respuesta editada a continuación .Respuestas:
Con la versión 2.13 de Git y posterior,
--recurse-submodules
se puede usar en lugar de--recursive
: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 - veaman git-clone
.Con la versión 1.9 de Git hasta la versión 2.12 (la
-j
marca solo está disponible en la versión 2.8+):Con la versión 1.6.5 de Git y versiones posteriores, puede usar:
Para repos ya clonados o versiones anteriores de Git, use:
fuente
master
?Debe hacer dos cosas antes de que se complete un submódulo:
fuente
git-submodule(1)
página de manual ( kernel.org/pub/software/scm/git/docs/git-submodule.html ). Descubrirá quegit submodule update
admite un buen parámetro llamado--recursive
.git submodule update --init
(También vea mi respuesta ).Git 2.23 (Q3 2019): si desea clonar y actualizar los submódulos a su última revisión:
Si solo desea clonarlos en su SHA1 grabado:
Vea abajo.
Respuesta original 2010
Como joschi menciona en los comentarios,
git submodule
ahora admite la--recursive
opción (Git1.6.5 y más).Consulte Trabajar con submódulos git de forma recursiva para la parte init.
Ver
git submodule
explicado para más.Actualización 2016, con git 2.8: consulte " ¿Cómo acelerar / paralelizar las descargas de submódulos git usando
git clone --recursive
? "Puede iniciar la recuperación del submódulo utilizando múltiples subprocesos, en paralelo.
Por instancias:
¡Aún mejor, con Git 2.23 (Q3 2019), puede clonar y pagar el submódulo a su rama de seguimiento en un solo comando!
Ver commit 4c69101 (19 de mayo de 2019) por Ben Avison (
bavison
) .(Fusionada por Junio C Hamano -
gitster
- en commit 9476094 , 17 jun 2019)Eso significa:
fuente
git submodule update --init --recursive --remote
debe actualizarlos a la última confirmación de su respectiva sucursal. (Ej: stackoverflow.com/a/56981834/6309 )clone --recurse-submodules --remote-submodules
tampocosubmodule update --init --recursive --remote
) me permite buscar los subrepos. Todo lo que obtengo es un archivo .gitmodules, y no pude encontrar ninguna manera de iniciar los subrepos que no sea clonarlos manualmente uno por uno. Al menos me gustaría tener un guión para hacerlosubmodule foreach
...[Respuesta rápida]
Puede usar este comando para clonar su repositorio con todos los submódulos:
O si ya ha clonado el proyecto, puede usar:
fuente
Si su submódulo se agregó en una rama, asegúrese de incluirlo en su comando de clonación ...
fuente
Prueba esto:
Automáticamente extrae los datos del submódulo suponiendo que ya haya agregado los submódulos al proyecto principal.
fuente
--recurse-submodules
y--recursive
son alias equivalentes .git submodule update --init --recursive
que se explica en esta respuestaCreo que puedes seguir 3 pasos:
fuente
respuesta tardía
Como acabo de pasar una hora entera jugando con un amigo: incluso si tiene derechos de administrador en BitBucket, siempre clone el repositorio ORIGINAL y use la contraseña del propietario del repositorio. Molesto al descubrir que te encontraste con esta trampa minera: P
fuente
Pruebe esto para incluir submódulos en el repositorio de git.
o
fuente
Puede usar la
--recursive
bandera al clonar un repositorio. Este parámetro obliga a git a clonar todos los submódulos definidos en el repositorio.Después de la clonación, a veces se pueden cambiar las ramas de los submódulos, así que ejecute este comando después de esto:
fuente
[Respuesta rápida]
Después de clonar el repositorio principal (que contenía un repositorio de submódulo), haga lo siguiente:
fuente
La recuperación paralela de submódulos tiene como objetivo reducir el tiempo requerido para recuperar los repositorios y todos sus submódulos relacionados al permitir la recuperación de múltiples repositorios a la vez. Esto se puede lograr utilizando la nueva opción --jobs, por ejemplo:
Según el equipo de Git, esto puede acelerar sustancialmente la actualización de repositorios que contienen muchos submódulos. Al usar --recurse-submodules sin la nueva opción --jobs, Git buscará los submódulos uno por uno.
Fuente: http://www.infoq.com/news/2016/03/git28-released
fuente
Tuve el mismo problema para un repositorio de GitHub. A mi cuenta le faltaba la clave SSH. El proceso es
Luego, puede clonar el repositorio con submódulos (
git clone --recursive YOUR-GIT-REPO-URL
)o
Ejecute
git submodule init
ygit submodule update
obtenga submódulos en un repositorio ya clonado.fuente
Permission denied (publickey). fatal: Could not read from remote repository.
errorPrueba esto.
Si ha agregado el submódulo en una rama, asegúrese de agregarlo al comando clonar.
fuente
Si es un proyecto nuevo, simplemente puede hacer lo siguiente:
Si ya está instalado que:
fuente