Hoy vamos a hablar de una característica poco utilizada de git. ¿Sabías que puedes gestionar dependencias de repositorios en Git utilizando submódulos?.
Características #
En esencia, hay un proyecto padre que es un repositorio. Contiene submódulos, los cuales a su vez también son repositorios por derecho propio, con todas las características propias de un repositorio.
Dentro del repositorio que contenga un submódulo, habrá un archivo .gitmodules que define los submódulos.
¿Cómo crear y usar un submódulo desde cero? #
- Crear un repositorio principal y el submódulo:
git init super-proyecto
- Luego, crea el repositorio que será el submódulo:
git init mi-submodulo
- o bien clónalo:
git submodule add <url-del-submodulo>
Ahora hay dos opciones:
- Si lo has creado con git submodule add sobre un repositorio online que ya existe, te habrás bajado su contenido a local, y se habrá creado un archivo .gitmodules en el parent. Ya estás listo para hacer commits en el submódulo y subirlos.
- Si lo has iniciado manualmente, crea, el repositorio online y copia la url. Haz el primer commit, y pushea el repositorio que será un submódulo a su correspondiente repositorio online. Ahora deberás posicionarte en la carpeta/repositorio parent y añadir el repositorio como un submódulo. De esta manera crearás el archivo .gitmodules:
git submodule add <url-del-submodulo>
- Finalmente, y de ahora en adelante, cuando hayas subido cambios al repositorio del submódulo, sube a la carpeta superior, en este caso super-proyecto, y haz lo mismo con los cambios del submódulo en el repositorio de super-proyecto. Esto es necesario porque ambos repositorios son distintos, aunque uno esté conectado dentro de otro.
Otras operaciones que podrías necesitar #
- Clonar un repositorio con submódulos:
git clone --recurse-submodules <url-del-repo>
- Actualizar submódulos:
git submodule update --remote
Conclusión #
Con los submódulos, puedes mantener tu código modular y reutilizable, utilizando repositorios como dependencias externas de otros repositorios.