De meeste code-integraties gebeuren met een merge, maar af en toe wil een ontwikkelaar zijn lokale code in de master branch via een rebase in plaats daarvan inhalen. In dit voorbeeld zullen we laten zien hoe je een branch naar master kunt rebasen in plaats van het merge commando te gebruiken, terwijl we ook de impact van het uitvoeren van een Git rebase naar master operatie zullen laten zien.
wat betekent het rebasen van Git naar master?,
in deze tutorial nemen we de branch genaamd develop en rebasen deze op de punt van master.
De develop branch is afgebroken van master bij commit C, dus beide branches delen de bestanden a.html, b.html en c.html. Zie de afbeelding hieronder om dit te helpen visualiseren.
sinds de branch is opgetreden, heeft master commits D en E. toegevoegd. dit betekent dat master twee bestanden heeft die zich ontwikkelen en niet hebben, namelijk d.html en e.html.,
Dit is hoe de git repository eruit ziet voor een Git rebase naar master.
verder zijn er sinds de splitsing twee nieuwe commits geweest op de develop branch, waarbij de bestanden zijn toegevoegd f.html en g.html. Dit zijn bestanden die de develop branch heeft die de master branch niet heeft.
Dit is hoe de GitLab repository zorgt voor de git rebase naar master.,
Impact van de git rebase
na een succesvolle develop branch naar master rebase:
de bestanden in de master branch zullen niet veranderen
de develop branch zal bovendien alle nieuwe bestanden van de master branch verwerven
het branchpunt van de develop stream zal veranderen.
het zal lijken alsof de develop branch gesplitst is na commit E op de master branch.
voor de rebase splitste de develop branch van master op commit C.,
Git rebase naar master opdrachtsyntax
de operatie om een Git rebase naar master uit te voeren is eenvoudig. Voeg gewoon aan het einde van het commando de naam van de Source branch toe en dan de naam van de branch om te rebasen. Om te rebasen develop to master is het commando als volgt:
git rebase master develop
waarschuwing: Er is een Git rebase op switch die soms ontwikkelaars ten onrechte geloven dat ze moeten opnemen met het rebase Commando. Door dit te doen zullen commits worden verwijderd en bestanden verloren gaan., Maak niet de fout van het uitvoeren van een Git rebase op operatie.
voor de rebase had de develop branch slechts vijf bestanden.
elke branch heeft vijf bestanden voordat de git rebase naar master operatie.
na de git rebase naar master, heeft de develop branch zeven bestanden. Het heeft al zijn originele bestanden behouden en twee nieuwe bestanden van de tip van de master branch verworven., Het aantal bestanden in de master branch blijft echter onveranderd.
na de git rebase van develop naar master neemt de develop branch alle bestanden van master over.
het feit dat de master branch geen bestanden heeft aangeschaft van de develop branch gooit vaak nieuwe Git gebruikers weg, maar dit is het verwachte gedrag. Een Git rebase synchroniseert niet tussen branches. Het vangt gewoon een branch op met de laatste wijzigingen van een andere.,
het aantal bestanden in ontwikkeling neemt toe na het rebasen van Git naar master.
ga voorzichtig te werk
wanneer een Git rebase optreedt, wordt de commit historie van de repository onherstelbaar gewijzigd. Na de rebase in ons voorbeeld, krijgen commits F en G gloednieuwe commit ID ’s toegewezen, en de oude commit ID’ s worden weggegooid. Om deze reden zul je vaak gerebased commits zien gemarkeerd als F’ en G’ om het feit te benadrukken dat nieuwe commit ID ‘ s zijn toegewezen.,
als je een branch rebase die gedeeld is met een andere ontwikkelaar en je wijzigingen terug pusht naar GitHub of GitLab, zal een mede-ontwikkelaar tegen een variëteit of problemen aanlopen wanneer ze proberen de rebased repository naar hun lokale ontwikkelomgeving te Pullen. Commits die ze lokaal hebben zullen verdwenen zijn op de remote, en de remote branch zal een incompatibele branch historie hebben. Zoals je je kunt voorstellen, kan het rebasen van een gedeelde branch of het squashen van Git commits havok veroorzaken.,
Rebase naar GitHub of GitLab
in feite, als je rebase en probeert te pushen naar GitLab of GitHub, zal de server niet toestaan dat de operatie wordt uitgevoerd. Om te rebasen naar GitHub of GitLab, moet een ontwikkelaar de –force switch toevoegen aan het git push commando om de wijzigingen te dwingen geaccepteerd te worden.
git push origin --force
een GitLab of GitHub rebase push wordt geweigerd tenzij geforceerd.,
De geaccepteerde logica is om alleen git te rebasen naar master branches lokaal naar je persoonlijke werkruimte. Op die manier hebben je Git Cleanup commando ‘ s geen invloed op iemand anders. Voer geen Git rebase uit om te masteren op branches die gedeeld zijn met andere ontwikkelaars. Een rebase op master is prima, alleen niet andersom. Anders ben je waarschijnlijk te breken de build en push of pull operaties zal worden gezet op stand-by, dwarsbomen verdere ontwikkeling en waardoor je persona non grata met de rest van de ontwikkelaars en DevOps team.
Berichtnavigatie