Un nombre de rama es documentación viva. Le dice al equipo qué estás haciendo y con qué urgencia, sin abrir el código.
feat/user-auth fix/login-timeout chore/update-eslint hotfix/payment-crash docs/api-auth-endpoints refactor/extract-payment-gateway test/checkout-e2e ❌ feat/User-Auth ✅ feat/user-auth ❌ fix/payment_timeout ✅ fix/payment-timeout ❌ feat/autenticacion-usuarios ✅ feat/user-authentication ❌ fix/the-login-form-authentication-token-expiry ✅ fix/auth-token-expiry ❌ fix/bug ✅ fix/payment-duplicate-#142 type(scope): descripción
Un estándar que hace que tu historial de Git sea legible por humanos y por máquinas (changelogs automáticos, semantic versioning).
feat Nueva feature fix Bug fix chore Mantenimiento, dependencias docs Solo documentación refactor Refactor sin cambio de comportamiento test Agregar o corregir tests perf Mejora de performance ci CI/CD changes style Formato, punto y coma, espacios feat(auth): add JWT token refresh logic fix(checkout): prevent double charge on network retry fix bug WIP refactor(billing): extract tax calculation to TaxEngine updated some stuff and fixed things feat: login
Also fixed the logout bug and updated readme perf(api): add Redis cache for product list endpoint
Before: 850ms avg
After: 45ms avg Reglas de oro:
Una buena descripción ahorra horas de ida y vuelta. El reviewer debería entender el cambio sin necesidad de preguntar.
### ¿Qué cambia? Resumen en una frase. Si el título del PR ya lo dice, no repitas. ### ¿Por qué? Contexto de negocio o técnico. Link al issue o spec si existe. ### ¿Cómo lo hice? Decisiones técnicas clave. Patrones usados. Alternativas consideradas y descartadas. ### ¿Cómo probarlo? Pasos concretos para QA o reviewer. Comandos, fixtures, seeds, URLs de staging. ### Screenshots / Evidencia Si es UI: antes/después. Si es API: response de curl o Postman. ### Riesgos Qué podría romperse. Migraciones, cambios de schema, dependencias nuevas. No hay una estrategia correcta para siempre. La clave es ser consistente y entender el trade-off.
Todos los commits de la rama se comprimen en uno solo. El historial de main queda lineal y limpio.
Crea un commit de merge que une la rama a main. Preserva todo el historial de la rama.
Reescribe los commits de la rama sobre la punta de main. Historial lineal sin commits de merge.
git push --force a main o develop Mergear sin revisar conflictos git add . && git commit -m "changes" Commits directos a main