Submódulos en Git con git submodule
En este post vamos a dar una introduccion a git submodule, para qué sirve, y te voy a dar un ejemplo práctico bien claro
En este post vamos a dar una introduccion a git submodule
, para qué sirve, y te voy a dar un ejemplo práctico bien claro.
📦 ¿Qué es un submódulo en Git?
Un submódulo es básicamente otro repositorio Git dentro de tu repositorio.
- Te permite incluir y controlar otro proyecto independiente dentro de tu proyecto principal.
- El submódulo sigue teniendo su propia historia, su propio control de versiones.
🧠 ¿Para qué sirven los submódulos?
- Para reutilizar código de otros repositorios (por ejemplo, librerías propias).
- Para trabajar con proyectos que dependen de otros proyectos.
- Para mantener proyectos separados, pero fácilmente actualizables.
Ejemplo clásico:
➔ Un proyecto principal (MiWeb
) que incluye como submódulo una librería (MiLibreria
).
🛠️ ¿Cómo funcionan los submódulos?
- El repositorio principal guarda una referencia (un commit específico) del submódulo.
- No se guarda todo el historial del submódulo en el repositorio principal.
- Para actualizar o mover un submódulo, se actualiza esa referencia.
🧪 Ejemplo práctico de uso de submódulos
1. Agregar un submódulo
git submodule add https://github.com/usuario/proyecto-submodulo.git carpeta_submodulo
Esto hace:
- Clona
proyecto-submodulo
en la carpetacarpeta_submodulo
. - Registra el submódulo en un archivo llamado
.gitmodules
.
2. Inicializar y clonar un proyecto que ya tiene submódulos
Si clonas un repo que tiene submódulos:
git clone https://github.com/usuario/proyecto-principal.git cd proyecto-principal
git submodule init
git submodule update
O directamente en un solo paso:
git clone --recurse-submodules https://github.com/usuario/proyecto-principal.git
3. Actualizar un submódulo
Si alguien actualizó el submódulo y vos querés traer esos cambios:
git submodule update --remote carpeta_submodulo
4. Eliminar un submódulo
Un poco más manual, pero en general:
git submodule deinit carpeta_submodulo
git rm carpeta_submodulo
rm -rf .git/modules/carpeta_submodulo
📚 Archivos que maneja Git con submódulos
Archivo | Qué guarda |
---|---|
.gitmodules |
Información sobre los submódulos (ruta y URL) |
Índice de Git | Guarda el commit específico del submódulo |
🚨 Atención especial con submódulos
- Los submódulos no se actualizan automáticamente con un
pull
, hay que hacergit submodule update
. - Cada submódulo puede tener su propia rama.
- Hay que tener cuidado de hacer commit en el proyecto principal cuando actualizás la referencia del submódulo.
🎯 Resumen en una frase
Un submódulo en Git es otro proyecto Git dentro del tuyo, que podés controlar y actualizar sin mezclar historiales.