Middle
Wat is het verschil tussen de commando's merge en rebase in het versiebeheersysteem Git?
sobes.tech AI
Antwoord van AI
merge combineert takken door een nieuwe commit te maken met twee ouders, waarbij de geschiedenis van wijzigingen behouden blijft. rebase verplaatst commits van een tak bovenop een andere, waardoor de geschiedenis lineair wordt, maar de hashes van de commits worden gewijzigd.
-
Bij
merge:- Er wordt een nieuwe merge-commit gemaakt.
- De geschiedenis van de takken blijft expliciet.
- Conflicten kunnen voorkomen en worden opgelost in de nieuwe commit.
# Voorbeeld van gebruik van merge git checkout feature-branch git merge main # Conflicten oplossen, indien aanwezig git commit -m "Main samenvoegen in feature-branch" -
Bij
rebase:- Commits worden "verplaatst" en bovenop de doel-branch toegepast.
- De geschiedenis wordt lineair, kan er "netter" uitzien.
- De hashes van de verplaatste commits veranderen.
- Er kan voor elke verplaatste commit een conflict ontstaan.
- Niet aanbevolen voor branches die al gepubliceerd zijn en door anderen worden gebruikt, omdat dit de geschiedenis wijzigt.
# Voorbeeld van gebruik van rebase git checkout feature-branch git rebase main # Conflicten oplossen, indien aanwezig (herhaal voor elke conflicterende commit) git add . git rebase --continue # of git rebase --skip om de commit over te slaan # of git rebase --abort om te annuleren
| Kenmerk | merge | rebase |
|---|---|---|
| Geschiedeniswijziging | Behoudt de geschiedenis | Wijzigt de geschiedenis (overschrijft) |
| Commits | Maakt een merge-commit | Verplaatst bestaande commits |
| Lineaire geschiedenis | Nee (takken divergeren) | Ja (vereenvoudigt de geschiedenis) |
| Benadering | Niet-destructief | Potentieel destructief |
| Toepasbaarheid | Publieke, gedeelde takken | Lokale, persoonlijke takken |