---
title: Uso de Submódulos en Git
description: "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…"
url: "https://samaniel.com/docs/uso-de-submodulos-en-git/"
updated: "2024-10-03"
category: Desarrollo / Git
---

# Uso de Submódulos en Git

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.
