Develop Branch es la rama de integración principal en Git Flow donde se fusionan todas las ramas feature completadas antes de preparar un lanzamiento. A diferencia de main, develop contiene los cambios más recientes pero aún no publicados — aquí ocurre la integración diaria de código de todos los desarrolladores del equipo. Según Atlassian, 2024, develop es una rama obligatoria en Git Flow y proporciona un entorno de integración estable para el equipo.
Puntos clave
Develop Branch (rama de desarrollo) es una rama de larga duración en Git Flow que sirve como centro central para la integración de código de todos los desarrolladores. Las ramas feature se fusionan en ella después de completar el desarrollo y la revisión de código.
El código en develop siempre está en un estado listo para crear un lanzamiento, aunque aún no esté desplegado en producción. Esto significa que todas las funciones en develop han pasado revisión, pruebas y comprobaciones de integración, pero aún esperan su ciclo de lanzamiento.
A diferencia de main, donde cada versión de código es un lanzamiento, develop contiene un flujo continuo de cambios. Los commits en develop aparecen a medida que se fusionan las ramas feature, lo que puede ocurrir varias veces al día.
Según Vincent Driessen, 2010, develop es un elemento clave de un modelo de bifurcación exitoso, ya que separa el trabajo en borrador de las versiones listas para lanzamiento.
Comprender las diferencias entre develop y main es fundamental para un flujo de trabajo Git Flow adecuado. Estas ramas cumplen funciones diferentes y tienen distintos requisitos de estabilidad.
| Característica | Develop | Main / Master |
|---|---|---|
| Propósito | Integración de nuevas funciones | Código de lanzamiento estable |
| Estabilidad | Alta (después de pruebas) | Máxima (producción) |
| Frecuencia de commits | Diaria (fusión de feature) | Por lanzamiento (cada 1-4 semanas) |
| Origen de ramas | De ella se crean feature | De ella se crean hotfix |
| Fusión | Desde feature mediante PR | Desde release mediante merge |
La separación en develop y main permite al equipo integrar continuamente nuevo código sin arriesgar la estabilidad de la versión de producción. Los desarrolladores pueden ver su código en develop inmediatamente después de la aprobación del PR, incluso antes del lanzamiento oficial.
En el modelo Git Flow, develop ocupa un lugar central entre las ramas feature (fuente de cambios) y las ramas release (preparación para el lanzamiento). Comprender esta jerarquía es la base de una bifurcación efectiva.
Esta estructura garantiza que develop siempre contenga el código más reciente con todas las nuevas funciones, mientras que main contiene solo código de producción verificado. Esto es especialmente importante para proyectos móviles con ciclos de revisión largos en App Store y Google Play.
Develop actúa como el enlace central entre las ramas feature, release y hotfix. Comprender las direcciones de fusión es esencial para prevenir conflictos y pérdida de commits.
La calidad del código en develop debe ser alta, pero no absoluta. A diferencia de main, donde cada error significa una corrección urgente, develop permite imperfecciones menores que se corregirán antes del lanzamiento.
Requisitos mínimos para el código antes de fusionar en develop:
Las comprobaciones automatizadas en el pipeline CI/CD deben ejecutarse en cada push a develop. Si la compilación se rompe, el desarrollador responsable debe solucionar el problema en una hora o revertir su commit.
Configurar GitHub Actions para develop garantiza que cada PR pase comprobaciones automatizadas antes de fusionarse. Un pipeline típico incluye compilación, pruebas y linting.
# GitHub Actions — verificación de develop después de la fusión
name: Develop CI
on:
pull_request:
branches: [develop]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Unit tests
run: ./gradlew testDebug
- name: Lint
run: ./gradlew lint
- name: Build
run: ./gradlew assembleDebug
La fusión en develop debe seguir reglas estrictas para mantener la estabilidad de la rama de integración. Violar estas reglas provoca conflictos, compilaciones rotas y pérdida de tiempo del equipo.
La regla de PR actualizado es especialmente importante. Si una rama feature se creó hace una semana y develop ha avanzado 50 commits, la fusión directa podría provocar conflictos que es mejor resolver en el contexto del PR que en develop.
Las reglas de protección de rama son configuraciones a nivel de GitHub, GitLab o Bitbucket que evitan cambios incorrectos en develop. Garantizan que incluso un push accidental no rompa la rama de integración.
Reglas de protección recomendadas para develop:
Configurar la protección de develop toma 10 minutos pero previene semanas de inactividad relacionadas con una rama de integración rota. Para proyectos móviles con equipos multiplataforma, esto es especialmente relevante.
Consideremos un día típico de un desarrollador: por la mañana actualiza develop, crea una nueva rama feature y, después de completar la tarea, fusiona los cambios de vuelta en develop.
# Sincronización matutina de develop
git checkout develop
git pull origin develop
# Creación de una nueva rama feature desde develop
git checkout -b feature/add-push-notifications
# Trabajando en la función...
git add . && git commit -m "Add FCM integration"
# Actualización de develop durante el desarrollo
git fetch origin develop
git rebase origin/develop
# Después de aprobar el PR — actualizar develop local
git checkout develop
git pull origin develop
git branch -d feature/add-push-notifications
El comando git pull en develop realiza dos operaciones a la vez: git fetch (recupera nuevos commits del servidor) y git merge (los fusiona con la rama local). Para develop, este es el método estándar de sincronización.
Si un código que rompió la compilación llega a develop, hay que actuar rápidamente. Cada hora de inactividad de develop es trabajo bloqueado para todo el equipo de desarrollo.
Si un código que rompió la compilación llega a develop, usa git revert para crear un nuevo commit que deshaga los cambios problemáticos. No uses git reset en develop — reescribe el historial que otros miembros del equipo ya tienen.
# Búsqueda del commit problemático
git log --oneline develop
# Cancelación del commit mediante revert (seguro)
git revert a1b2c3d
# Envío de la corrección al develop remoto
git push origin develop
# Ver cambios en un commit específico
git show a1b2c3d --stat
Preguntas frecuentes
Para proyectos con uno o dos desarrolladores, develop suele ser redundante — main y las ramas feature son suficientes. Cuando el equipo crece a 3+ personas, develop se vuelve necesario para aislar las funciones incompletas del código de producción estable.
No, los commits directos en develop están prohibidos en cualquier proyecto profesional. Todos los cambios pasan por un Pull Request con revisión de código y comprobaciones automatizadas. La excepción son las ediciones administrativas de README o configuración de CI, pero incluso estas es mejor hacerlas mediante un PR.
En trunk-based development no hay una rama develop separada — todos los desarrolladores trabajan en main con ramas feature muy cortas (1-2 días). Es una alternativa a Git Flow, popular en la cultura DevOps con alto nivel de automatización de pruebas.
Después de cada lanzamiento, la rama release se fusiona de vuelta en develop para incorporar todas las correcciones realizadas durante la preparación del lanzamiento. Si no se hace, develop divergirá del código de lanzamiento, causando conflictos en el siguiente lanzamiento.
Si develop está roto, un desarrollador senior crea una rama hotfix desde el último commit estable, corrige el problema y fusiona la corrección directamente en develop mediante un PR con estado especial. Después de la recuperación, se realiza un análisis de causa raíz.
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