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.

Integra 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. Te pones directamente con la funcionalidad y creas los commits en la rama main. Al final del día, tienes unos cuantos commits que la implementan 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 trabajas allí en la funcionalidad. Los commits se quedan en esa rama, mientras main sigue 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, haces un merge de esa rama de corrección 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, haces un merge de esa rama en main.