Feature Branch — es una técnica de ramificación en Git en la que cada nueva funcionalidad se desarrolla en una rama separada, aislada del código principal. Esto permite que varios desarrolladores trabajen simultáneamente en diferentes tareas sin riesgo de dañar la versión estable del proyecto. Según Atlassian, 2024, Feature Branch es un elemento clave de Git Flow y se utiliza en la mayoría de los proyectos comerciales.
Puntos Clave
feature/nombre-función en Git Flow estándar.Feature Branch (rama de funcionalidad) es una rama temporal en Git creada a partir de develop para desarrollar una funcionalidad específica. A diferencia de las ramas de larga duración main y develop, las ramas feature existen por un tiempo limitado — desde unas horas hasta unas semanas.
El objetivo principal de feature branch es aislar los cambios relacionados con una tarea del resto del código. El desarrollador puede experimentar, hacer múltiples commits e incluso romper el código en su propia rama sin afectar el trabajo de otros miembros del equipo.
Después de completar el desarrollo, la rama feature se fusiona de vuelta a develop a través de un Pull Request con revisión de código obligatoria. Después de la fusión, la rama generalmente se elimina para mantener el repositorio limpio.
Según Vincent Driessen, 2010, el modelo Git Flow con ramas feature se convirtió en un estándar de la industria gracias a la clara separación de responsabilidades entre diferentes tipos de ramas.
El flujo de trabajo con feature branch consta de una secuencia de pasos que el desarrollador realiza para cada nueva funcionalidad. Este proceso minimiza los conflictos de fusión y garantiza el control de calidad del código.
La sincronización periódica con develop es críticamente importante. Cuanto más tiempo viva una rama feature sin fusionar cambios de develop, mayor será la probabilidad de conflictos en la fusión final.
| Frecuencia de sincronización | Riesgo de conflictos | Comodidad de desarrollo |
|---|---|---|
| A diario | Bajo | Requiere rebase o merge frecuente |
| Semanalmente | Medio | Ritmo cómodo, conflictos moderados |
| Mensualmente | Alto | Riesgo de resolución compleja de conflictos |
| Nunca | Crítico | La fusión podría ser imposible sin pérdida de datos |
La nomenclatura de ramas es una parte importante de la disciplina del equipo. Un estándar de nombres uniforme permite identificar rápidamente en qué tarea se está trabajando y quién la está realizando.
feature/added-auth-module.feature/PROJ-42-add-login.feature/feat/analytics-dashboard.El uso del ID de tarea de JIRA, Trello u otro sistema es una mejor práctica. Vincula automáticamente el código con la tarea y simplifica la búsqueda de ramas a través de git log.
Pull Request (o Merge Request en GitLab) es una solicitud para fusionar la rama feature en develop. Un PR no es solo una operación técnica, sino un proceso de revisión de código en equipo que mejora la calidad del código y difunde el conocimiento dentro del equipo.
Un buen PR contiene un título con una breve descripción de la tarea, un enlace al ticket y una descripción de los cambios. El desarrollador debe indicar qué se hizo exactamente, qué archivos se modificaron y si existen riesgos potenciales para otras partes del proyecto.
El equipo revisa el código en el PR, deja comentarios, solicita cambios (change requests) y aprueba la fusión (approve). Después de la aprobación, se realiza un merge o squash merge.
El tiempo promedio de revisión de un PR en el desarrollo móvil es de 4 a 24 horas. La biblioteca Danger automatiza parte de las verificaciones, ejecutando linters y pruebas directamente en el PR.
Después de la aprobación del PR, la rama feature puede fusionarse en develop de diferentes maneras. La elección de la estrategia de fusión afecta el historial de commits y la posibilidad de revertir cambios.
Para proyectos móviles con lanzamientos frecuentes, el squash merge es el más utilizado: proporciona un historial limpio en develop, mientras que los detalles del desarrollo permanecen en la descripción del PR y en la tarea del tracker.
Incluso los desarrolladores experimentados cometen errores al trabajar con ramas feature. Conocer los problemas típicos ayuda a evitar la pérdida de tiempo y datos.
La mejor manera de evitar estos problemas es acordar las reglas de trabajo al inicio del proyecto y usar verificaciones automatizadas en el pipeline de CI/CD.
Consideremos un escenario práctico: un desarrollador comienza una nueva función de autenticación en una aplicación móvil. Crea una rama feature, trabaja en el código y completa la tarea con un Pull Request.
# Actualizar develop y crear rama feature
git checkout develop
git pull origin develop
git checkout -b feature/add-login-screen
# Trabajo en la funcionalidad: commits
git add src/ui/login/
git commit -m "Add login screen layout"
# Enviar rama feature al servidor remoto
git push origin feature/add-login-screen
# Sincronización con develop (rebase)
git fetch origin develop
git rebase origin/develop
# Después de aprobar PR: actualizar develop local y eliminar la rama
git checkout develop
git pull origin develop
git branch -d feature/add-login-screen
El comando git branch -d elimina la rama solo después de que sus cambios se hayan fusionado completamente. Si la rama no está fusionada, Git sugerirá usar git branch -D para la eliminación forzada — use esta bandera con precaución.
El pipeline de CI/CD debe ejecutarse para cada rama feature antes de crear un PR. Esto permite detectar problemas en una etapa temprana, antes de que el código llegue a la revisión de otros desarrolladores.
# GitHub Actions para verificar la rama feature
name: Feature Branch CI
on:
push:
branches:
- 'feature/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: ./gradlew test
- name: Lint check
run: ./gradlew lint
El pipeline verifica que el código compile, las pruebas pasen y el estilo del código cumpla con los estándares del equipo. Solo después de superar todas las verificaciones se puede crear un Pull Request.
Preguntas Frecuentes
Sí, es una práctica estándar. Cada desarrollador puede trabajar en su propia rama feature, y todas se sincronizan con develop de forma independiente. La regla principal es una rama por tarea para evitar dependencias cruzadas en el código.
Ejecute git rebase origin/develop en su rama feature. Si surgen conflictos, resuélvalos uno por uno — los commits se reescribirán sobre el último estado de develop. Después del rebase, necesitará git push --force para actualizar la rama remota.
Si la tarea se canceló, simplemente elimine la rama feature. Use git branch -d feature/nombre para la rama local y git push origin --delete feature/nombre para la remota. Todos los cambios no confirmados se perderán.
En esencia es lo mismo. Diferentes equipos usan diferentes prefijos: feature/, task/, feat/. No hay diferencia en la mecánica de Git — todas son ramas temporales creadas a partir de develop para desarrollo aislado.
Sí, es una práctica obligatoria. Las ramas después de la fusión ensucian la lista de referencias y pueden causar confusión. La mayoría de las plataformas (GitHub, GitLab) ofrecen eliminar la rama inmediatamente después del merge del PR, y las ramas locales se eliminan con el comando git branch -d.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también