Skip to content

Mejores Prácticas de Git para la Colaboración en Equipo

Objetivo

Flujo consistente, historial limpio y menos fricción.

Fundamentos

PrincipioRazón
Ramas cortasMenos conflictos
Commits atómicosReversión simple
Revisión tempranaCalidad y alineación
AutomatizaciónRepetible y confiable
TransparenciaFacilita decisiones

Nomenclatura de Ramas

feature/<scope>-<resumen>
fix/<issue>-<bug>
chore/<tarea>
refactor/<area>
docs/<tema>
release/<version>

Ejemplo: feature/auth-refresh-token.

Mensajes de Commit

Formato recomendado:

<tipo>(<opcional-scope>): <resumen imperativo>

<motivo / contexto>
<detalle adicional>

Tipos comunes: feat, fix, refactor, chore, docs, test, perf, ci.

Ejemplo:

feat(auth): implement refresh token rotation

Prevents reuse attacks and aligns with security policy 2024-Q1.

Commits Atómicos

Un cambio lógico = un commit. Evita mezclar refactor + feature.

Squash Inteligente

  • Squash en PR para condensar WIP
  • Preserva claridad: no squash merges de release/hotfix

Rebase vs Merge

CasoRecomendar
PR pequeñoRebase interactivo
Historial público ya compartidoMerge normal
Resolución de conflicto complejaMerge (contexto)
Serie de commits limpiosRebase para linealidad

Pull Frecuente

bash
git fetch origin
git rebase origin/main

Mantiene rama fresca.

Hooks Útiles (local)

HookUso
pre-commitLint, tests rápidos
commit-msgValidar formato
pre-pushTests más largos

Revisiones de Código Saludables

PrácticaDetalle
< 400 líneasMenos fatiga
ChecklistConsistencia
Enfoque en intenciónNo micro-nit
Responder con contextoEvita ping-pong
Aceptar mejoras incrementalesEvita bloqueo

Checklist PR Ejemplo

  • [ ] Compila
  • [ ] Tests pasan
  • [ ] Sin console.log/BREAKPOINTS
  • [ ] Docs actualizados
  • [ ] Migraciones revisadas
  • [ ] Seguridad evaluada

Sincronización de Releases

  • Tag semántico: v1.4.0
  • Changelog generado (Conv. Commits)
  • Branch release congelada salvo fixes críticos

Feature Flags

Permiten merge temprano; reducen ramas longevas.

Evitar

AntipatrónRiesgo
Ramas gigantesDificultad de revisión
Commits "misc"Historial opaco
Forzar push a mainCorrupción colaborativa
Ignorar conflictos menoresDeuda acumulada
Reescribir historial públicoRotura de clones

Flujos Combinados Ejemplo

main (siempre deployable)
develop (si se necesita integración)
feature/*
release/*
hotfix/*

Minimizar capas si el equipo es pequeño.

Métricas Sanas (Indicativas)

MétricaObjetivo
Tiempo PR abierto< 24h
Tamaño PR< 300 LOC
Conflictos por PRTendencia ↓
RevertsBajo y justificado

Refactors Seguros

  1. Tests de protección
  2. Cambios mecánicos pequeños
  3. Commits separados
  4. Revisión con contexto

Integración Continua

  • Lint + Format (fail early)
  • Tests unitarios + rápidos
  • Seguridad (dependabot / scanner)
  • Build determinista

Comunicación

Prefijo en mensaje de commit o PR: [BREAKING], [SECURITY].

Recuperación

bash
git reflog
git reset --hard <hash>

Resumen

Disciplina ligera y consistente produce velocidad sostenible y reduce sorpresas en producción.