Git Rebase

  1. Wat is Git Rebase?
  2. Dubbel glas
    Dubbel glas
  3. Rebase-workflow
  4. Gouden regel van rebasen

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,

Git Feature Branch

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.

Git Feature Branch

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 ,

Git log grafiek na rebasen

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.