Middle
¿Cuál es la diferencia entre los comandos merge y rebase en el sistema de control de versiones Git?
sobes.tech AI
Respuesta de la IA
merge combina ramas creando un nuevo commit con dos padres, preservando la historia de cambios. rebase traslada los commits de una rama sobre otra, ordenando linealmente la historia, pero cambiando los hashes de los commits.
-
En
merge:- Se crea un nuevo commit de fusión.
- La historia de las ramas permanece explícita.
- Pueden surgir conflictos, que se resuelven en el nuevo commit.
# Ejemplo de uso de merge git checkout rama-funcionalidad git merge main # Resolución de conflictos, si los hay git commit -m "Fusionar main en rama-funcionalidad" -
En
rebase:- Los commits "se trasladan" y se aplican sobre la rama objetivo.
- La historia se vuelve lineal, puede parecer "más limpia".
- Los hashes de los commits trasladados cambian.
- Puede surgir un conflicto para cada commit trasladado.
- No se recomienda para ramas que ya han sido publicadas y usadas por otros desarrolladores, ya que modifica la historia.
# Ejemplo de uso de rebase git checkout rama-funcionalidad git rebase main # Resolución de conflictos, si los hay (repetir para cada commit conflictivo) git add . git rebase --continue # o git rebase --skip para omitir el commit # o git rebase --abort para cancelar
| Característica | merge | rebase |
|---|---|---|
| Cambio en la historia | Mantiene la historia | La modifica (sobrescribe) |
| Commits | Crea un commit de merge | Traslada commits existentes |
| Linealidad de la historia | No (las ramas divergen) | Sí (simplifica la historia) |
| Enfoque | No destructivo | Potencialmente destructivo |
| Aplicabilidad | Ramas públicas y compartidas | Ramas locales y personales |