Buenas prácticas

Usa ramas de funcionalidad

Crea una rama nueva para cada funcionalidad o corrección de bug en vez de trabajar directamente en la rama main.

Una rama de funcionalidad (feature branch) es cualquier rama creada para desarrollar una funcionalidad concreta o corregir un bug concreto.

Fusiona las ramas de funcionalidad en main solo cuando la funcionalidad esté completa y probada. Así mantienes tu trabajo aislado y resulta más fácil gestionar los cambios. Con este enfoque, la rama main siempre contiene código estable listo para producción.


Imagina que tienes que implementar la autenticación con Facebook en la aplicación cliente.

Mal
  1. Empiezas a trabajar en la funcionalidad directamente, creando commits en la rama main. Al final del día, tienes unos cuantos commits que implementan la funcionalidad a medias.
  2. De repente, te llama tu responsable y te pide corregir un bug crítico del sistema de inicio de sesión actual y publicarlo de inmediato.
  3. Aunque la corrección en sí es trivial, te das cuenta de que, si publicas ahora, el código del login con Facebook a medio hacer también irá incluido en la versión. ¡Ups!
La cosa empeora aún más cuando trabajas en equipo. Imagina a todo el mundo trabajando en la rama main: código a medio hacer de varios desarrolladores mezclado, imposible de distinguir qué está listo para publicar y qué no. El resultado es confusión, compilaciones fallidas y tiempo perdido.
Bien
  1. Creas una rama nueva llamada feature/facebook-login (o como prefieras) y empiezas a trabajar allí en la funcionalidad. Creas tus commits en esa rama, manteniendo main limpia y estable.
  2. Si aparece una corrección de bug inesperada, cambias a la rama main, creas otra rama llamada bugfix/login-issue e implementas la corrección allí. Cuando está probada, esa rama de corrección se fusiona en main. Se publica la versión y todo el mundo contento.
  3. Vuelves a tu rama feature/facebook-login, haces un git rebase para incorporar los últimos cambios de main a tu rama de funcionalidad y sigues trabajando. Cuando la funcionalidad está completa, la vuelves a fusionar en main.