Sobes.tech
Junior

Wat is het verschil tussen de commando's git rebase en git merge?

sobes.tech AI

Antwoord van AI

Het verschil tussen git rebase en git merge ligt in de manier waarop wijzigingen van de ene tak naar de andere worden geïntegreerd.

git merge combineert de wijzigingen door een nieuwe merge-commit te maken. De commitgeschiedenis blijft alleen lineair binnen elke tak, maar het samenvoegpunt creëert een "vertakking".

// Voorbeeld van gebruik:
git checkout main
git merge feature/nieuwe-functie

git rebase verplaatst de commits van de doel-tak bovenop de commits van de basis-tak. Dit creëert een lineaire geschiedenis van commits, alsof het werk direct op de basis-tak is gedaan. De originele commits van de tak waarop rebase wordt uitgevoerd, worden herschreven met nieuwe ouder-commits.

// Voorbeeld van gebruik:
git checkout feature/nieuwe-functie
git rebase main

Vergelijking:

Kenmerk git merge git rebase
Type geschiedenis Niet-lineair (met merge-commits) Lineair (commits worden herschreven)
Commitgeschiedenis Wordt volledig behouden Wordt gewijzigd (commits worden herschreven)
Merge-commit Wordt aangemaakt Wordt niet aangemaakt
Helderheid van geschiedenis Kan moeilijker te volgen zijn bij frequente merges Netter en lineair, maar het context van de originele merges gaat verloren
Gebruik Aanbevolen voor openbare takken Voorkeur voor lokale, nog niet gepubliceerde takken

De keuze tussen hen hangt af van de taak en de voorkeuren van het team. Voor openbare takken wordt meestal git merge aanbevolen om de geschiedenis te behouden. Voor lokale takken die nog niet zijn gepubliceerd, helpt git rebase om een schone, lineaire geschiedenis te behouden.