Kursinnhold
GitHub-Grunnleggende
GitHub-Grunnleggende
Utføre en Rebase-operasjon
Rebaser endringer på main-grenen
Før vi kan rebase endringene våre, må vi først bytte til main
-grenen og hente de siste endringene:
La oss nå se på commit-treet:
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 skal utføre 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:
Fast-forward-fletting
Siden rebasen var vellykket, la oss se på commit-treet vårt igjen:
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 til main
-grenen:
La oss kontrollere at begge grenene peker til samme commit ved å se på den siste commiten:
Fjerne funksjonsgrenen
main
-grenen inneholder nå den siste commiten med betalingssystemet implementert, så vi kan trygt fjerne både den lokale og eksterne feature/payment
-grenen. Følgende kommando fjerner den eksterne grenen:
Nå kan vi fjerne den lokale grenen:
Til slutt kan alle endringene vi har gjort pushes tilbake til det eksterne depotet:
For å bekrefte 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:
Som du ser, ble feature/payment
-grenen slettet med hell, og det er nå kun to grener: main
og john/test
med sine eksterne motparter.
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!