Ambos merge e rebase integram mudanças de uma branch em outra, mas fazem isso de formas diferentes: merge preserva o histórico com um commit de merge, enquanto rebase reescreve o histórico para criar uma sequência linear. Entender a diferença e quando usar cada um é importante.
Merge — preserva o histórico (combina)
main: A───B───C───────M ← M is a MERGE COMMIT (two parents)
\ /
feature: D───E
→ git merge feature: creates M combining the branches
✓ Preserves the actual history (shows the branch existed, when it merged)
✗ History has merge commits (can look cluttered with many merges)
