Menu
Coddy logo textTech

Git Submodule

Última actualización

Un submódulo incrusta un repositorio Git dentro de otro, fijado a un commit específico. El repo padre registra de qué commit del submódulo depende, para que todos obtengan la misma versión. Es la forma de incluir una biblioteca o componente compartido que vive en su propio repositorio sin copiar su código.

Prueba esto en el terminal playground - una shell real en tu navegador, sin nada que instalar.

Un git submodule incrusta otro repositorio dentro del tuyo, fijado a un commit exacto.

Sintaxis

CommandWhat it does
git submodule add <url> libs/xAñadir un repo como submódulo en libs/x
git clone --recurse-submodules <url>Clonar un repo y sus submódulos
git submodule update --init --recursiveInicializar y traer submódulos tras un clon simple
git submodule update --remoteActualizar submódulos a su último commit
git submodule statusMostrar el commit de cada submódulo

Casos comunes

GoalCommand
Clonar un proyecto que usa submódulosgit clone --recurse-submodules <url>
Traer submódulos después de haber clonadogit submodule update --init --recursive
Subir un submódulo a su versión más recientegit submodule update --remote

Preguntas frecuentes sobre git submodule

¿Qué es un git submodule?
Un submódulo es un repositorio Git anidado dentro de otro repositorio Git en un commit fijo. El repo padre almacena un puntero a ese commit exacto en lugar de los archivos del submódulo, para que los colaboradores obtengan la misma versión. Se usa para incluir una dependencia o un componente compartido que tiene su propio repo e historial.
¿Cómo clono un repositorio con submódulos?
Usa git clone --recurse-submodules <url> para clonar el padre y todos sus submódulos en un solo paso. Si ya clonaste sin esa opción, ejecuta después git submodule update --init --recursive para poblar las carpetas de los submódulos.
¿Cómo actualizo un submódulo al último commit?
Ejecuta git submodule update --remote, que trae la rama rastreada de cada submódulo y lo mueve al último commit. Luego confirma el cambio en el repo padre, ya que el padre registra a qué commit del submódulo apunta - la actualización no se guarda hasta que confirmas ese puntero.
¿Por qué mi carpeta de submódulo está vacía después de clonar?
Porque clonaste sin --recurse-submodules, así que Git creó las carpetas pero no trajo su contenido. Arréglalo con git submodule update --init --recursive, que inicializa y descarga cada submódulo.
¿Puedo practicar esto en línea?
Sí. Abre el terminal playground para ejecutar git submodule en una shell real en tu navegador - sin nada que instalar. El curso interactivo y gratuito de Git de Coddy también cubre paso a paso la configuración de repositorios.
Coddy programming languages illustration

Aprende Git con Coddy

COMENZAR