Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Basisprincipes van Rebasen | Meer Geavanceerde Workflows
GitHub Fundamentals

Basisprincipes van Rebasen

Veeg om het menu te tonen

Een commit maken op de main branch

We beginnen met het maken van een commit direct in de remote main branch door het bestand README.md in de remote repository te bewerken. Hierdoor zullen de main branch en de feature/payment branch een uiteenlopende commitgeschiedenis hebben.

Hier is de regel die aan het bestand is toegevoegd:

New feature will soon be integrated.

Hier is het bijbehorende commitbericht:

Add information about new feature in README.md

Inzicht in rebasen

Zoals eerder vermeld in het vorige hoofdstuk, kan en moet de feature-branch, zodra deze is beoordeeld en getest, worden samengevoegd met de main-branch. Tot nu toe hebben we hiervoor alleen het commando git merge gebruikt. Een andere benadering is echter het gebruik van het commando git rebase.

Note
Meer leren

Rebasen is het proces waarbij een reeks commits wordt verplaatst of gecombineerd naar een nieuwe basiscommit. Dit gebeurt door de wijzigingen van de ene branch opnieuw toe te passen op een andere branch, wat resulteert in een lineaire commitgeschiedenis.

Wanneer we een branch aanmaken, houdt Git de laatste commit op beide branches bij. Als slechts één branch nieuwe wijzigingen heeft, kan Git een fast-forward uitvoeren en de wijzigingen toepassen. Als beide branches echter nieuwe wijzigingen hebben, maakt Git een nieuwe merge commit aan, wat resulteert in een driewegmerge.

Hier zie je hoe een driewegmerge eruit zou zien in ons geval, waarbij C4 de laatste commit was op de feature/payment-branch vóór het samenvoegen:

Drieweg-merge

Drieweg-merges kunnen het debuggen echter bemoeilijken vanwege de gesplitste, niet-lineaire geschiedenis. Door te rebasen veranderen we de basis van onze commits en spelen we deze opnieuw af bovenop de nieuwe basis, waardoor Git een fast-forward merge kan uitvoeren en een lineaire geschiedenis behoudt.

Hier is een animatie die illustreert hoe rebasen in ons geval kan worden uitgevoerd (de commit-identificaties komen hier niet overeen met de echte):

rebase
Note
Opmerking

Wanneer je een branch rebase't, ben je in feite de geschiedenis ervan aan het herschrijven. Dit betekent dat de oude commits worden vervangen door nieuwe, die andere identificaties (hash-sommen) hebben omdat ze gebaseerd zijn op andere momentopnames van de code. Zoals te zien is in de bovenstaande animatie, is de identificatie van de commit op de feature/payment branch veranderd na het rebasen.

question mark

Wat is het belangrijkste doel van het gebruik van git rebase in plaats van git merge?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 4

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 3. Hoofdstuk 4
some-alt