Colaborando en proyectos en el que eres colaborador
Cuando eres miembro o colaborador directo de una organización o repositorio (sin necesidad de hacer un fork personal), el flujo de trabajo profesional se centra en el uso de ramas de funcionalidad (feature branches), rebase para mantener un historial limpio y Pull Requests estructurados hacia develop o main.
1. Preparación inicial del entorno #
Clonar el repositorio y acceder #
1git clone https://github.com/ORGANIZACION/REPOSITORIO.git 2cd REPOSITORIO
Configurar Git para un historial limpio y seguro (Recomendado) #
1# 'git pull' integrará cambios mediante rebase por defecto (historial lineal): 2git config pull.rebase true 3 4# Guarda y restaura cambios no confirmados automáticamente al rebasar: 5git config rebase.autoStash true 6 7# Limpia automáticamente ramas remotas eliminadas: 8git config fetch.prune true 9 10# Asocia la rama remota en el primer push sin requerir -u: 11git config push.autoSetupRemote true
Traer y rastrear las ramas principales #
1git fetch --all --prune 2git switch -c develop origin/develop 3git switch -c main origin/main
2. Flujo diario de trabajo (Feature Branches) #
A) Crear una rama de funcionalidad desde develop #
Asegúrate de partir de la última versión de develop:
1git switch develop 2git pull 3git switch -c feature/nombre-claro
B) Desarrollar y realizar commits atómicos #
Realiza cambios pequeños y descriptivos siguiendo Conventional Commits:
1git add . 2git commit -m "feat(login): validaciones de email y password"
C) Sincronizar tu rama si develop avanzó #
Mientras programas, otros miembros del equipo integran cambios en develop. Mantén tu rama al día para evitar conflictos acumulados:
-
Actualiza
developlocal:1git fetch 2git switch develop 3git pull -
Rebasa tu rama sobre el nuevo
develop:1git switch feature/nombre-claro 2git rebase develop -
Si surgen conflictos, resuélvelos en los archivos y continúa:
1git add ruta/archivo-resuelto.ts 2git rebase --continue(Si necesitas cancelar el rebase y volver al estado previo:
git rebase --abort). -
Sube tu rama al servidor remoto:
1# Primera subida: 2git push -u origin feature/nombre-claro 3 4# Si ya la habías subido y acabas de hacer rebase: 5git push --force-with-leaseTIP
git push --force-with-leasees la versión segura de--force. Comprueba que nadie más haya empujado commits nuevos a la rama remota antes de sobrescribirla.
3. Apertura e Integración de Pull Requests (PR) #
- Sube tu rama al repositorio remoto si no lo has hecho.
- En GitHub/GitLab abre un Pull Request:
- Base (destino):
develop - Compare (origen):
feature/nombre-claro
- Base (destino):
- Incluye un título claro y una descripción con el contexto de la tarea y cómo probarla.
- Asegúrate de que pasen las comprobaciones automáticas (CI, linters, tests).
Estrategia de merge recomendada #
- Squash & merge: condensa todos los commits intermedios de la feature en un único commit limpio sobre
develop. - Rebase & merge: conserva los commits individuales aplicando la serie directamente sin commit de merge.
4. Actualizar el entorno tras la aceptación del PR #
Una vez aprobado y fusionado tu PR:
1git fetch 2git switch develop 3git pull 4 5# Borrar la rama local y remota: 6git branch -d feature/nombre-claro 7git push origin --delete feature/nombre-claro
5. Integración de develop en main para Releases #
Este paso habitualmente lo ejecuta el maintainer o release manager:
-
Verificar estabilidad en
develop:1git fetch 2git switch develop 3git pull -
Fusionar
developenmaincon commit de release:1git switch main 2git pull 3git merge --no-ff develop 4git push -
Etiquetar la versión y publicar release:
1git tag -a v1.2.3 -m "Release v1.2.3" 2git push origin v1.2.3 -
Sincronizar
developconmainsi hubo cambios directos:1git switch develop 2git merge main 3git push
6. Hotfixes rápidos en producción #
Si surge un fallo crítico en producción:
-
Crear rama de hotfix desde
main:1git switch main 2git pull 3git switch -c hotfix/descripcion-bug -
Aplicar corrección, pruebas y abrir PR hacia
main. -
Tras el merge en
main, crear tag y desplegar. -
Reinyectar la corrección en
develop:1git switch develop 2git pull 3git merge main 4git push
7. Cheat Sheet de Comandos Frecuentes #
1# 1. Iniciar feature 2git switch develop && git pull 3git switch -c feature/mi-tarea 4 5# 2. Guardar trabajo 6git add . 7git commit -m "feat(modulo): descripcion de la mejora" 8 9# 3. Mantener al dia con develop 10git fetch 11git switch develop && git pull 12git switch feature/mi-tarea 13git rebase develop 14git push --force-with-lease 15 16# 4. Limpieza tras merge 17git switch develop && git pull 18git branch -d feature/mi-tarea 19git push origin --delete feature/mi-tarea
Resumen del tema
Conceptos clave #
- Flujo Directo de Colaboración:
- Creación de ramas de funcionalidad siempre desde
developactualizada (git switch -c feature/nombre develop). - Sincronización continua de la feature con
git rebase developy subida segura congit push --force-with-lease.
- Creación de ramas de funcionalidad siempre desde
- Integración vía Pull Requests:
- Apertura de PRs con destino a
develop, validación de checks automáticos de CI y estrategia Squash & merge recomendada.
- Apertura de PRs con destino a
- Gestión de Releases y Hotfixes:
- Las releases se fusionan de
developamaincongit merge --no-ffy se etiquetan con versión semántica (git tag -a vX.Y.Z). - Los hotfixes se originan en
mainy, tras resolverse y etiquetarse, se reinyectan inmediatamente endevelop.
- Las releases se fusionan de
Qué debes recordar #
Crea tus ramas de funcionalidad desde develop, sincronízalas frecuentemente con git rebase develop y abre Pull Requests hacia develop asegurando que pasen los checks de CI.