Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Udførelse af en Rebase-Operation | Mere Avancerede Workflows
Github-Grundlæggende

Udførelse af en Rebase-Operation

Stryg for at vise menuen

Rebase af ændringer til main-grenen

Før vi kan rebase vores ændringer, skal vi først skifte til main-grenen og hente de seneste ændringer:

git checkout main
git pull
Tjekker main-grenen ud og henter ændringer

Lad os nu se på commit-træet:

git log --graph --oneline --all
Commit-træ før rebase

På nuværende tidspunkt har både main- og feature/payment-grenene commits efter den seneste fælles forfader. Dette indikerer, at en fast-forward-fletning ikke kan udføres.

Hvis vi skulle flette disse grene, ville der ske en trevejsfletning. Vi ønsker dog at holde vores historik lineær, så vi udfører en rebase af feature/payment-grenen main-grenen. Dette kan gøres ved at skifte til feature/payment-grenen og køre kommandoen git rebase:

git checkout feature/payment
git rebase main
Rebase af ændringer

Fast-forward-fletning

Da rebase-operationen er gennemført med succes, lad os tage et kig på vores commit-træ igen:

git log --graph --oneline
Commit-træ efter rebase

Som forventet er commit-historikken nu lineær med den seneste commit på feature/payment-grenen. Nu kan vi udføre en simpel fast-forward-fletning til main-grenen:

git checkout main
git merge feature/payment
Fletning af grene

Lad os bekræfte, at begge grene peger på det samme commit ved at se på det seneste commit:

git log -n 1
Sidste commit

Fjernelse af feature-gren

main-grenen indeholder nu det seneste commit med betalingssystemet implementeret, så vi kan trygt fjerne både den lokale og den eksterne feature/payment-gren. Følgende kommando fjerner den eksterne gren:

git push --delete origin feature/payment

Nu kan vi fjerne den lokale gren:

git branch -d feature/payment
Sletning af grene

Til sidst kan alle de ændringer, vi har foretaget, skubbes tilbage til fjernlageret:

git push
Skubber sletning

For at bekræfte, at feature-grenen blev slettet både lokalt og på fjernlageret, kan du køre følgende kommando, som viser alle (-a står for alle) lokale og fjernede grene:

git branch -a
Visning af alle grene

Som du kan se, blev feature/payment-grenen succesfuldt slettet, og der er nu kun to grene: main og john/test med deres fjernmodparter.

Overordnet set fungerer rebase godt for lokale ændringer, der endnu ikke er delt, men det kan give betydelige problemer for ændringer, der allerede er offentliggjort til et fjernlager og muligvis downloadet af andre samarbejdspartnere. At rebase commits, som andre bruger, kan skabe forvirring og konflikter på grund af omskrivning af commit-historikken.

Som en generel regel bør man undgå at rebase ændringer, der er skubbet til fjernlagre, for at undgå disse problemer.

question mark

Efter at have rebased feature/payment oven på main, hvorfor udfører git merge feature/payment en fast-forward-fletning?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 5

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 3. Kapitel 5
some-alt