DevPath · Aprende a programar ESPTEN

Git y trabajo en equipo

Versiones, releases y monorepos

Tags y releases

Un tag es una etiqueta fija que marca un commit concreto, normalmente para señalar una versión publicada. A diferencia de una rama, no se mueve.

git tag v1.4.0                 # tag ligero en el commit actual
git tag -a v1.4.0 -m "Release 1.4.0"   # tag anotado (con autor y mensaje)
git push origin v1.4.0         # publica el tag (push no envía tags por defecto)
git push origin --tags         # publica todos los tags

Una release es la publicación formal de una versión: el tag + notas de cambios (changelog) + artefactos (binarios, paquetes). En GitHub se crea a partir de un tag.

Versionado semántico (SemVer)

SemVer asigna a cada versión tres números: MAJOR.MINOR.PATCH (p. ej. 2.4.1). Cada uno comunica el tipo de cambio:

Cambio Ejemplo Salto
Rompe la API Eliminas un parámetro obligatorio MAJOR
Añade sin romper Nuevo método opcional MINOR
Arregla un bug Corriges un cálculo PATCH
~1.2.3  -> permite PATCH:  >=1.2.3 <1.3.0
^1.2.3  -> permite MINOR:  >=1.2.3 <2.0.0   (por defecto en npm)

Encaja con Conventional Commits: fix: -> PATCH, feat: -> MINOR, feat!: / BREAKING CHANGE -> MAJOR.

Monorepo vs polyrepo

mi-monorepo/
├── package.json        # workspaces
├── apps/
│   ├── web/
│   └── api/
└── packages/
    ├── ui/
    └── utils/

No hay "ganador" universal: el monorepo brilla cuando los paquetes están muy acoplados y se versionan/despliegan juntos; el polyrepo, cuando son independientes y los gestionan equipos separados.

Pon esto en práctica

DevPath es un curso práctico: aquí lees la teoría; en la app la pones en práctica con ejercicios que se ejecutan de verdad, sin conexión.

Empezar gratis en la app →
← Trabajo en equipo: PRs, review y convencionesVer el módulo →