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:
- Git slaat tijdelijk de commits van je huidige tak op die verschenen nadat het zich van
mainheeft afgesplitst. - Je huidige tak wordt teruggezet naar de staat van de
maintak. - 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:
rebasewijzigt de ID's van commits. Dit is gevaarlijk als jerebaseuitvoert 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.