Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utföra en Rebase-Operation | Mer Avancerade Arbetsflöden
Github-Grunder

Utföra en Rebase-Operation

Svep för att visa menyn

Omplacera ändringar på main-grenen

Innan vi kan omplacera våra ändringar behöver vi först byta till main-grenen och hämta de senaste ändringarna:

git checkout main
git pull
Byter till main-grenen och hämtar ändringar

Låt oss nu titta på commit-trädet:

git log --graph --oneline --all
Commit-träd före rebase

Just nu har både main- och feature/payment-grenarna commits efter den senaste gemensamma förfadern. Detta innebär att en fast-forward-sammanslagning inte kan utföras.

Om vi skulle slå ihop dessa grenar skulle en trevägssammanslagning ske. Vi vill dock behålla en linjär historik, så vi utför en rebase av feature/payment-grenen main-grenen. Detta görs genom att byta till feature/payment-grenen och köra kommandot git rebase:

git checkout feature/payment
git rebase main
Rebase av ändringar

Fast-forward-sammanslagning

Eftersom rebasen lyckades, låt oss titta på vårt commit-träd igen:

git log --graph --oneline
Commit-träd efter rebase

Som förväntat är commit-historiken nu linjär med den senaste commiten på grenen feature/payment. Nu kan vi utföra en enkel fast-forward-sammanslagning till grenen main:

git checkout main
git merge feature/payment
Sammanfoga grenar

Låt oss verifiera att båda grenarna pekar på samma commit genom att titta på den senaste committen:

git log -n 1
Senaste commit

Ta bort funktionsgrenen

main-grenen innehåller nu senaste commit med det implementerade betalningssystemet, så vi kan säkert ta bort både den lokala och fjärranslutna feature/payment-grenen. Följande kommando tar bort fjärrgrenen:

git push --delete origin feature/payment

Nu kan vi ta bort den lokala grenen:

git branch -d feature/payment
Ta bort grenar

Slutligen kan alla ändringar vi har gjort skickas tillbaka till remote repository:

git push
Pushar borttagning

För att verifiera att feature-grenen har tagits bort både lokalt och på fjärrservern kan du köra följande kommando, som listar alla (-a står för alla) lokala och fjärrgrenar:

git branch -a
Lista alla grenar

Som du kan se har grenen feature/payment framgångsrikt tagits bort, och det finns nu bara två grenar: main och john/test med deras fjärrmotsvarigheter.

Överlag fungerar rebase bra för lokala ändringar som ännu inte har delats, men det kan orsaka betydande problem för ändringar som redan har publicerats till ett fjärrrepository och eventuellt laddats ner av andra medarbetare. Att rebase:a commits som andra använder kan skapa förvirring och konflikter på grund av omskrivning av commit-historiken.

Som en allmän regel, undvik att rebase:a ändringar som har pushats till fjärrrepositoryn för att undvika dessa problem.

question mark

Efter att ha rebase:at feature/paymentmain, varför utför git merge feature/payment en fast-forward-merge?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 3. Kapitel 5
some-alt