Utføring av en Rebase-operasjon
Sveip for å vise menyen
Rebasering av endringer til main-grenen
Før vi kan rebase endringene våre, må vi først bytte til main-grenen og hente de siste endringene:
git checkout main
git pull
La oss nå se på commit-treet:
git log --graph --oneline --all
Per nå har både main- og feature/payment-grenene commits etter den siste felles forfaderen. Dette indikerer at en fast-forward-fusjon ikke kan utføres.
Hvis vi skulle slått sammen disse grenene, ville en treveis-fusjon skjedd. Vi ønsker imidlertid å holde historikken lineær, så vi utfører en rebase av feature/payment-grenen på main-grenen. Dette kan gjøres ved å bytte til feature/payment-grenen og kjøre git rebase-kommandoen:
git checkout feature/payment
git rebase main
Fast-forward-fletting
Siden rebase-operasjonen var vellykket, la oss se på commit-treet vårt igjen:
git log --graph --oneline
Som forventet er commit-historikken nå lineær med den siste commiten på feature/payment-grenen. Nå kan vi utføre en enkel fast-forward-fletting inn i main-grenen:
git checkout main
git merge feature/payment
La oss kontrollere at begge grenene peker til samme commit ved å se på den siste commiten:
git log -n 1
Fjerne funksjonsgrenen
main-grenen inneholder nå siste commit med betalingssystemet implementert, så vi kan trygt fjerne både den lokale og eksterne feature/payment-grenen. Følgende kommando fjerner den eksterne grenen:
git push --delete origin feature/payment
Nå kan vi fjerne den lokale grenen:
git branch -d feature/payment
Til slutt kan alle endringene vi har gjort pushes tilbake til fjernlageret:
git push
For å verifisere at feature-grenen ble slettet både lokalt og eksternt, kan du kjøre følgende kommando, som viser alle (-a står for alle) lokale og eksterne grener:
git branch -a
Som du kan se, ble feature/payment-grenen vellykket slettet, og det er nå bare to grener: main og john/test med deres tilsvarende eksterne grener.
Generelt fungerer rebase godt for lokale endringer som ennå ikke er delt, men det kan føre til betydelige problemer for endringer som allerede er publisert til et eksternt repository og muligens lastet ned av andre samarbeidspartnere. Å rebase commits som andre bruker kan skape forvirring og konflikter på grunn av omskriving av commit-historikken.
Som en tommelfingerregel bør du unngå å rebase endringer som er pushet til eksterne repositories for å forhindre disse problemene.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår