¿Qué patrones de trabajo con Git has utilizado?
sobes.tech AI
Respuesta de la IA
-
Git-flow: Utilizado para proyectos con un ciclo de lanzamientos claramente definido. Es conveniente para gestionar la fijación de funciones, correcciones de errores y preparación de lanzamientos. Crea ramas
feature,develop,release,hotfix,master. -
GitHub flow: Se aplicó en proyectos donde se priorizan lanzamientos frecuentes y pequeños. Modelo simple basado en una rama principal (
mainomaster) y ramas para cada función o corrección, que se fusionan inmediatamente en la rama principal tras revisión. -
Desarrollo basado en trunk: Practicado en proyectos que requieren alta frecuencia de integración y despliegue continuo. Los desarrolladores realizan cambios directamente en la rama principal (
trunk) o en ramas de corta duración, que se fusionan rápidamente de vuelta. Elemento clave — Feature Toggles.
Además de estos patrones principales, se utilizó:
-
Rebase vs Merge: Dependiendo de la situación y los acuerdos en el equipo, se usó
git rebasepara mantener un historial limpio en las ramas locales antes de fusionar, ygit merge --no-ffpara conservar un historial de fusiones explícito en la rama principal.# Ejemplo rebase git checkout feature/nova-feature git pull --rebase origin main # Resolución de conflictos, si los hay git push -f origin feature/nova-feature # O solicitud de pull para fusionar en main# Ejemplo merge --no-ff git checkout main git merge --no-ff feature/nova-feature -m "Fusionar feature nova-feature en main" git push origin main -
Squash and Merge: Se aplicaba frecuentemente al fusionar ramas de funciones en la rama principal mediante Pull Request. Permite combinar varios commits de la rama de función en un solo commit limpio en la rama principal.
# Ejemplo de squash merge a través de la interfaz de la plataforma Git (GitHub, GitLab) # Generalmente se realiza al confirmar el Pull Request. -
Cherry-picking: Se usó para transferir commits específicos entre ramas, por ejemplo, para backporting de correcciones desde la rama principal a la rama de lanzamiento o staging.
# Ejemplo cherry-pick git checkout release/v1.2 git cherry-pick <commit_hash>