Flujo de trabajo Git
Modelo de ramas
main ──────────────────────────────────────────────── producción estable
└─ feat/#65-matchmaking ──── desarrollo de feature ─── PR → main
└─ fix/#102-precision-score ─ bugfix ──────────────── PR → main
└─ docs/frontend-arch ─────── solo documentación ───── PR → main
Cada rama parte de main y se integra con un Pull Request. No hay rama develop intermedia.
Convención de nombres de rama
<tipo>/<issue>-<descripcion-corta>
| Tipo | Cuándo usarlo |
|---|---|
feat/ |
Nueva funcionalidad (issue de GitHub) |
fix/ |
Corrección de bug |
docs/ |
Solo documentación |
refactor/ |
Refactorización sin cambio de comportamiento |
test/ |
Añadir o corregir tests |
chore/ |
Cambios de infraestructura, deps, CI |
Ejemplos:
- feat/#65-matchmaking
- fix/#102-precision-life-formula
- docs/frontend-architecture
Commits
Sigue Conventional Commits:
<tipo>(<scope>): <descripción imperativa en presente>
[cuerpo opcional — explica el POR QUÉ, no el QUÉ]
[#número-de-issue]
Tipos válidos: feat, fix, docs, refactor, test, chore, perf.
Ejemplos:
feat(game): añade modo Precision con barra de vida continua (#59)
fix(auth): evita doble refresh cuando hay peticiones paralelas (#88)
docs(frontend): documenta arquitectura de componentes
Ciclo de vida de un issue
- El issue se abre en GitHub con etiqueta (
frontend,backend,docs,bug,sprint-3...). - Se asigna a un desarrollador y se coloca en el sprint activo.
- Se crea la rama correspondiente desde
main. - Al terminar el desarrollo se abre un Pull Request contra
main. - Al menos un revisor aprueba el PR.
- Se hace merge con Squash and merge para mantener el historial limpio.
- La rama se borra automáticamente tras el merge.
Checklist de Pull Request
Antes de marcar el PR como listo para revisión:
- [ ] El código compila sin errores (
ng build/./mvnw package) - [ ] Los tests pasan (
ng test/./mvnw test) - [ ] No hay
console.logni código comentado - [ ] Los contratos de API coinciden con
guia-de-coordinación-técnica.md - [ ] Si es un endpoint nuevo, está reflejado en Swagger (anotaciones
@Operation) - [ ] Si hay cambio de esquema de BD, se actualizó
bd-scheme.md - [ ] El título del PR sigue el formato Conventional Commits
Sincronización con main
Mantén tu rama actualizada con rebase, no con merge:
git fetch origin
git rebase origin/main
Esto evita commits de merge innecesarios y facilita el squash final.
Etiquetas de issues
| Etiqueta | Significado |
|---|---|
frontend |
Trabajo en Angular |
backend |
Trabajo en Spring Boot |
docs |
Solo documentación |
bug |
Comportamiento incorrecto confirmado |
sprint-3 / sprint-4 |
Sprint al que pertenece |
blocked |
Bloqueado por otra tarea |
needs-review |
Listo para revisión de código |
Revisión de código
- Comenta sobre el código, no sobre la persona.
- Distingue entre bloqueante (debe resolverse antes del merge) y sugerencia (puede hacerse en otro issue).
- Aprueba con ✅ solo cuando el código está listo para
main. - Si el PR tiene conflictos, el autor los resuelve (nunca el revisor).