Git Rebase

We hebben basisfusies behandeld zoals
-
Snel vooruit samenvoegen
-
Drieweg (recursief) samenvoegen
In deze tutorial gaan we een van de belangrijkste functies van Git - rebasen introduceren.
Wat is Git Rebase?
Rebasen betekent dat je de root-commit van branches wijzigt op basis van, of met andere woorden, je reset de base-commit naar de recente commit van de branch die je wilt samenvoegen, zoals master
branch.
Laten we eens kijken hoe dit eruit ziet,
We hebben de master
en Feature
branches in dit diagram en terwijl we aan onze Feature
branch werkten , bleven sommige mensen eraan werken master
.
We willen onze branch rebasen voordat we deze weer samenvoegen master
en wanneer we het rebase commando uitvoeren, verandert het de commit waarop onze testing branch is gebaseerd in plaats van naar te wijzen in C3
plaats van C1
. De onderstaande grafiek toont wat er gebeurt na rebasen.
Wanneer we de wijzigingen samenvoegen, hoeft het alleen nog maar een fast-forward merge te doen omdat de commits nu gebaseerd zijn op de laatste commit van master
. Dit is de reden waarom rebasen een van de krachtigste functies van git is.
Nadat je deze rebased Feature
branch hebt samengevoegd met de master
, zal de commit log-grafiek er als volgt uitzien ,
Het lijkt erop dat de Feature
branch nog nooit heeft bestaan en alle commit-logs in de rechte lijn staan.
Rebase-workflow
-
Maak de functietak
$ git checkout -b Feature
-
Breng wijzigingen aan in deze branch en commit
$ git add modified.txt $ git commit -m 'coment here'
-
Rebase functie vertakking naar
master
$ git rebase master
-
Voeg de rebased feature branch samen op
master
$ git checkout master $ git merge Feature
Gouden regel van rebasen
De gouden regel is om nooit een branch te rebasen die je publiekelijk beschikbaar hebt gesteld vanwege het herschrijven van de geschiedenis.
Als je een publieke branch rebaseert en iemand doet die van die branch werken nadat je rebased hebt, dan master
zal het erg moeilijk zijn om die nieuwe wijzigingen in je branch te krijgen, omdat de andere ontwikkelaars nog steeds met de originele master
branch werken.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn