git submodule
Incluye otros repositorios dentro de tu repositorio
El comando 'git submodule' integra otro repositorio Git en una de tus carpetas, fijado a un commit exacto. Tu repositorio solo registra qué commit del submódulo usar; el submódulo conserva su propio historial. Así incluyen los proyectos bibliotecas compartidas que no quieren copiar. Al clonar hace falta --recurse-submodules (o git submodule update --init) para traerlos.
Sinopsis
git submodule add <url> [<path>]
git submodule update --init --recursive
git submodule status
git submodule foreach <command>Ejemplos
Añadir una biblioteca
git submodule add https://github.com/acme/ui.git lib/uiLa clona y registra su commit.
Tras clonar
git submodule update --init --recursiveTraer todos los submódulos.
Clonar con ellos
git clone --recurse-submodules <url>Todo en un paso.
Actualizar a lo último
git submodule update --remoteLlevar cada submódulo al último commit de su rama.
Ejemplos de flujos de trabajo
cd lib/ui && git pullHacer avanzar el submódulo
cd ../.. && git add lib/uiRegistrar el nuevo commit
git commit -m "Update ui library"Confirmarlo
Solución de problemas
Carpeta de submódulo vacía
Causa: No se trajeron los submódulos
git submodule update --init --recursive
Consejos y trampas
Buenas prácticas
- ✓Configura git config --global submodule.recurse true para que pull y checkout actualicen los submódulos.
Errores comunes
- ✗Clonar sin --recurse-submodules y obtener carpetas vacías.
- ✗Confirmar dentro de un submódulo con HEAD separado y perder el trabajo.
- ✗Olvidar confirmar el nuevo commit del submódulo en el repositorio padre.
Preguntas frecuentes
Solo la URL del submódulo (en .gitmodules) y el commit exacto que usa.