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
Låt oss nu titta på commit-trädet:
git log --graph --oneline --all
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 på 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
Fast-forward-sammanslagning
Eftersom rebasen lyckades, låt oss titta på vårt commit-träd igen:
git log --graph --oneline
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
Låt oss verifiera att båda grenarna pekar på samma commit genom att titta på den senaste committen:
git log -n 1
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
Slutligen kan alla ändringar vi har gjort skickas tillbaka till remote repository:
git push
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
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.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal