Desarrollas en una rama. Main ha avanzado. ¿Cómo integrar?
A---B---C main
/
D---E feature-branch2 opciones:
¿Cuál elegir? Depende de tu objetivo.
git checkout main
git merge feature-branch A---B---C-------M main
/ /
D---E-----------/ (M = merge commit)git checkout feature-branch
git rebase main A---B---C---D'---E' main| Criterio | MERGE | REBASE |
|---|---|---|
| Historial | Conserva las ramas en paralelo | Lo linealiza todo |
| Commits | Añade un commit de merge | Reescribe los commits |
| Complejidad | Simple (1 comando) | Más compleja |
| Conflictos | 1 resolución como máximo | Varias resoluciones posibles |
| Seguridad | Muy seguro | Peligroso si se usa mal |
| Trazabilidad | Se ve cuándo se crearon/fusionaron las ramas | Pierde la información temporal |
| Colaboración | Perfecto en equipo | Cuidado con los commits compartidos |
| Legibilidad | Compleja con muchas ramas | Muy clara, lineal |
Situaciones:
Comandos:
git checkout main
git pull origin main
git merge feature-branch
git push origin mainSituaciones:
Comandos:
git checkout feature-branch
git rebase main # Resolver conflictos si hace falta
git checkout main
git merge feature-branch # Fast-forward merge
git push origin main
```
### **REGLA DE ORO:**
**NEVER REBASE SHARED COMMITS !**
```bash
# PELIGRO - NUNCA hagas esto:
git push origin feature-branch # Commits compartidos
git rebase main # Reescribe commits compartidos = CAOS en el equipo
# OK - rebase solo en local:
git rebase main # Commits todavía locales = OK
git push origin feature-branch # Push después del rebase = OK| Nivel | Estrategia recomendada |
|---|---|
| Principiante | Siempre MERGE |
| Intermedio | MERGE para colaborar, REBASE para limpiar en local |
| Experto | El equipo decide una estrategia coherente |
Lo importante = la coherencia en el equipo, no la perfección técnica.