Sobes.tech
Junior

Wat betekent het uitvoeren van een rebase op de hoofdbranch?

sobes.tech AI

Antwoord van AI

Het uitvoeren van git rebase main vanaf de huidige tak betekent dat je het referentiepunt van je tak verplaatst naar de laatste commit van main.

Dit gebeurt als volgt:

  1. Git slaat tijdelijk de commits van je huidige tak op die verschenen nadat het zich van main heeft afgesplitst.
  2. Je huidige tak wordt teruggezet naar de staat van de main tak.
  3. De opgeslagen commits worden in volgorde toegepast op de laatste commit van main.

Belangrijkste verschillen met merge:

Kenmerk Rebase Merge
Geschiedenis Lineair, geen merge-commits Niet-lineair, met merge-commits
Geschiedenis overzicht Netter, makkelijker te begrijpen Kan moeilijker te begrijpen zijn
Conflicten Worden opgelost voor elke commit afzonderlijk Worden één keer opgelost voor alle wijzigingen
Toepassing Voorkeur voor kleine, persoonlijke takken Voorkeur voor het integreren van openbare takken

Voorbeeld:

Oorspronkelijke geschiedenis:

A -- B -- C (main)
      \
       D -- E (feature)

Na git checkout feature en git rebase main:

A -- B -- C (main)
           \
            D' -- E' (feature)

Waar D' en E' de commits D en E zijn met een nieuwe ouderreferentie.

Mogelijke problemen:

  • Conflicten: Kunnen optreden bij het toepassen van elke commit.
  • Herschrijven van geschiedenis: rebase wijzigt de ID's van commits. Dit is gevaarlijk als je rebase uitvoert op een tak die al is gepubliceerd en waar andere ontwikkelaars aan werken. In dat geval kan een geforceerde push (git push --force) nodig zijn, wat met voorzichtigheid moet gebeuren.