Geen categorie Improve23 mei 2014

Fast forward

Stel je hebt een branch gemaakt van master en je wilt deze weer in master opnemen.
Wanneer je een merge doet heb je de optie om een fast forward te doen indien mogelijk.
Dit kan als er op de master geen commits zijn geweest sinds je de branch gemaakt hebt.
Git kan dan alle commits van de branch zomaar in de master opnemen, alsof je altijd op master bent blijven werken.
Je hebt dan geen merge commit in master. Dit heet fast forward en er zijn development teams die dit niet willen gebruiken.

Merge vs Rebase

Bij een merge tussen branch feature en master worden de commits uit branch feature samengevoegd met de commits in master.
Dit werkt eigenlijk net als bij svn. Je krijgt dan in feite een commit in de branch waarin je de spullen merged.
Dit is de eenvoudigste methode. Een rebase is een ander mechanisme.
Hierbij wordt de laatste versie van de master genomen en alle commits van feature worden hier bovenop afgespeeld.
Dit veranderd je geschiedenis, waardoor het lijkt alsof alle wijzigingen hebben plaatsgevonden op de laatste versie van master.
Hierna kun je een fast-forward merge tussen feature en master doen, waardoor alle commits in master komen te staan.
Rebase mag je nooit doen met commits die je al met anderen gedeeld hebt, aangezien je dan niet meer samen kunt werken.
Je kunt op deze manier heel veel ellende veroorzaken, dus wees voorzichtig.

Rebase wordt gebruikt om je history graph van git netjes en overzichtelijk te houden, terwijl merge wordt gebruikt om precies te blijven zien hoe de geschiedenis verlopen is.
Voor beiden is wat te zeggen, maar als je nog niet zo bekend bent met Git en de werking van Rebase, dan is het verstandig om voorlopig nog enkel merge te gebruiken.