Grunderna i Rebase
Svep för att visa menyn
Skapa en commit på main-grenen
Vi börjar med att göra en commit direkt i den fjärranslutna main-grenen genom att redigera filen README.md i det fjärranslutna arkivet. Detta kommer att göra att main-grenen och feature/payment-grenen får en avvikande commit-historik.
Här är raden som lades till i filen:
New feature will soon be integrated.
Här är det aktuella commit-meddelandet:
Add information about new feature in README.md
Förstå grunderna i rebase
Som nämnts i föregående kapitel kan och bör feature-grenen slås samman tillbaka till main-grenen när den har granskats och testats. Hittills har vi endast använt kommandot git merge för detta ändamål. Ett annat tillvägagångssätt är dock att använda kommandot git rebase.
Rebase är processen att flytta eller kombinera en sekvens av commits till en ny bas-commit. Detta görs genom att spela upp ändringarna från en gren på en annan gren, vilket resulterar i en linjär commit-historik.
När vi skapar en gren håller Git reda på den senaste commit på båda grenarna. Om endast en gren har nya ändringar kan Git snabbspola framåt och tillämpa ändringarna. Om båda grenarna har nya ändringar skapar Git en ny merge-commit, vilket resulterar i en trevägs-sammanslagning.
Så här skulle en trevägs-sammanslagning se ut i vårt fall, där C4 var den senaste commit på feature/payment-grenen innan sammanslagningen:
Trevägs-sammanfogningar kan dock försvåra felsökning på grund av uppdelad, icke-linjär historik. Genom att använda rebase ändrar vi basen för våra commits och spelar upp dem ovanpå den nya basen, vilket gör att Git kan utföra en fast-forward-sammanfogning och behålla en linjär historik.
Här är en animation som illustrerar hur rebase kan utföras i vårt fall (commit-identifierarna motsvarar inte de verkliga här):
När du rebasar en gren skriver du om dess historik. Det innebär att de gamla commiten ersätts med nya, som har olika identifierare (hashsummor) eftersom de baseras på andra ögonblicksbilder av koden. Som visas i animationen ovan ändrades identifieraren för committen på grenen feature/payment efter rebasingen.
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