Skip to content

Instantly share code, notes, and snippets.

@cTapiaDev
Last active November 16, 2024 22:29
Show Gist options
  • Save cTapiaDev/f1910d34adb41f8bcf10a0ef67dd9113 to your computer and use it in GitHub Desktop.
Save cTapiaDev/f1910d34adb41f8bcf10a0ef67dd9113 to your computer and use it in GitHub Desktop.

Submódulos en Git

En caso de que quieras alojar proyectos "individuales" dentro de un gran repositorio, lo ideal es utilizar submódulos para manejarlos de manera independiente. Esto va a permitir actualizar cada repositorio de manera independiente el uno del otro, mientras que el "general" se actualizará con los cambios de todos sus repositorios alojados como submódulos.

1.- Alojar el proyecto como uno independiente (Aunque se encuentre dentro de otro ya alojado)

git add Nest/project-heroes

2.- Realizar el commit de los cambios

git commit -m 'Nuevo proyecto Heroes agregado al repositorio'

3.- Hacer un push al repositorio remoto

git push -u origin ctapiadev


Cargar el submódulo al repositorio padre

El alojar un repositorio como submódulo es la forma más optima de cargar un repositorio dentro de otro ya existente.

1.- Agregar como submódulo

git submodule add <url-del-repositorio> Nest/project-heroes

Asegurate de reemplazar correctamente < url-del-repositorio > con la verdadera url del repositorio que contiene al project.

2.- Realizar un commit al proyecto padre

git commit -m 'project-heroes añadido como submódulo'

3.- Hacer un push de los nuevos cambios

git push -u origin ctapiadev


Posibles errores

En ocasiones ocurre que cuando intentamos cargar el proyecto sin especificar que sea un submódulo git crea un indice de la carpeta y luego no deja convertirlo en un submódulo efectivo, para eso debemos eliminar el indice ya existente y proceder con los pasos correctos.

1.- Eliminar la carpeta del índice

git rm --cached -r Nest/project-heroes


¿Cómo clonar un repositorio con submódulos?

Para lograrlo es necesario agregar una bandera para que a la hora de clonar el repositorio padre, haga lo mismo con todos los submódulos.

1.- Agregar flag al momento de clonar

git clone --recurse-submodules <url-del-repositorio-principal>

2.- En caso de que ya clonaras sin el submódulo, puedes inicializarlo con un comando

git submodule update --init --recursive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment