Sección perteneciente al curso Control de versiones con Git Avanzado.
A veces estaremos desarrollando una aplicación modular que puede tener partes de código que están compartidas con otras aplicaciones o en las que hay un grupo de desarrolladores que solo toca cierto código. En estos casos, tener un solo repositorio git para toda la aplicación, implica que todos los desarrolladores estén tocando un mismo código que podría estar separado.
Para esto, git ofrece los submódulos: repositorios git, dentro de otro repositorio git. Un repositorio git “padre” que está controlando los cambios en repositorios “hijo”. Estos repositorios hijo pueden estar aislados entre sí y no saber nada del padre.
Tener repositorios dentro de otros (repositorios anidados) de manera independiente es posible con git gracias a los submódulos.
Útil para cuando hay jerarquía de proyectos/módulos.
Hay poca documentación sobre los submódulos y es muy técnica lo que hace que sea algo difícil manejarse con ellos
git submodule add <URL> [subcarpeta]
El submódulo tendrá su propio repositorio remoto, que será totalmente independiente del repositorio padre. El padre tendrá referencias a él.
El repositorio padre generará un archivo .gitmodules con información sobre los submódulos que le hemos añadido.
Método 1:
git clone <URL> --recurse-submodules
Método 2:
git clone <URL> git submodule init git submodule update
git pull git submodule update [nombre_submódulo]