Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Utføring av en Rebase-operasjon | Mer Avanserte Arbeidsflyter
GitHub-Grunnleggende

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
Bytte til main-grenen og hente endringer

La oss nå se på commit-treet:

git log --graph --oneline --all
Commit-tre før rebase

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 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
Rebaser endringer

Fast-forward-fletting

Siden rebase-operasjonen var vellykket, la oss se på commit-treet vårt igjen:

git log --graph --oneline
Commit-tre etter rebase

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
Slå sammen grener

La oss kontrollere at begge grenene peker til samme commit ved å se på den siste commiten:

git log -n 1
Siste commit

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
Slette grener

Til slutt kan alle endringene vi har gjort pushes tilbake til fjernlageret:

git push
Pusher sletting

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
Viser alle grener

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.

question mark

Etter å ha rebased feature/paymentmain, hvorfor utfører git merge feature/payment en fast-forward-merge?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 5

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 3. Kapittel 5
some-alt