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

oscar Escrito por oscar 27 April 2025 113 0

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 carpeta carpeta_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 hacer git 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.


Comentario

Debe aceptar antes de enviar