Att Lösa Sammanslagningskonflikter
Åtgärda konflikter
I föregående kapitel stötte vi på en sammanslagningskonflikt, så nu är det dags att lösa den. Börja med att öppna filen branch_learning.txt
med Vim-redigeraren genom att använda följande kommando:
Om du inte har Vim installerat kan du använda andra textredigerare, såsom nano eller atom (ersätt vim
med namnet på din textredigerare i kommandot ovan). Vi rekommenderar dock starkt att du använder Vim eftersom det gör det betydligt enklare att följa med i instruktionerna.
Här är vår fil öppnad i Vim-redigeraren:
Nu kan vi se markörer som visar de konfliktande sektionerna. Dessa markörer representeras av pilar och specialsymboler för att markera de motstridiga ändringarna från olika grenar. Konfliktmarkörerna är följande:
<<<<<<< HEAD
: Anger början på ändringarna från nuvarande gren (master
i vårt fall);=======
: Avgränsar ändringarna från nuvarande gren (HEAD) och ändringarna från grenen som slås ihop;>>>>>>> feature/new-feature
: Markerar slutet på ändringarna från grenen som slås ihop.
För att lösa konflikterna kan vi antingen välja ändringen från nuvarande gren (master
), välja ändringen från grenen som slås ihop (feature/new-feature
) eller redigera ändringarna manuellt.
Låt oss manuellt redigera ändringarna genom att kombinera ändringarna från båda grenarna enligt följande steg:
1. Gå in i redigeringsläge
Först måste vi gå in i insert (redigerings-)läge i Vim genom att trycka på i
. Detta möjliggör redigering av texten.
2. Redigera den konfliktfyllda sektionen
Därefter ska vi kombinera raderna från båda grenarna efter varandra, så att filens innehåll blir enligt följande:
3. Avsluta redigeringsläge, spara och avsluta:
För att lämna insert-läget trycker vi på Escape-tangenten. Därefter, för att spara ändringarna och avsluta, skriver vi :wq
och trycker på Enter-tangenten:
Committa filen
Eftersom vi har löst konflikterna, lägg nu till branch_learning.txt
i staging area och kontrollera statusen:
Filen har ändrats och har faktiskt lagts till i staging area. Vi kan nu fortsätta med att committa den:
Återigen öppnas standardtextredigeraren (Vim i mitt fall) med standardmeddelandet för commiten gällande sammanslagningen:
Gå in i insert mode i Vim genom att trycka på i
och ändra detta meddelande genom att lägga till följande rad: Kept lines from both branches
för att ange hur vi löste konflikterna. Här är det kompletta commit-meddelandet:
För att lämna insert mode, spara ändringarna och avsluta Vim, tryck på Escape-tangenten och skriv sedan :wq
och tryck på Enter-tangenten.
Committen är genomförd och sammanslagningskonflikten är nu löst.
Låt oss nu titta på vår commit-historik som en graf (--graph
flagga) med en rad per commit (--oneline
flagga):
Här kan vi se vår senaste merge-commit och den karakteristiska formen av en trevägs-sammanslagning.
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
Can you explain what a three-way merge is?
What should I do if I encounter another merge conflict?
How can I view more details about a specific commit in the log?
Awesome!
Completion rate improved to 3.57
Att Lösa Sammanslagningskonflikter
Svep för att visa menyn
Åtgärda konflikter
I föregående kapitel stötte vi på en sammanslagningskonflikt, så nu är det dags att lösa den. Börja med att öppna filen branch_learning.txt
med Vim-redigeraren genom att använda följande kommando:
Om du inte har Vim installerat kan du använda andra textredigerare, såsom nano eller atom (ersätt vim
med namnet på din textredigerare i kommandot ovan). Vi rekommenderar dock starkt att du använder Vim eftersom det gör det betydligt enklare att följa med i instruktionerna.
Här är vår fil öppnad i Vim-redigeraren:
Nu kan vi se markörer som visar de konfliktande sektionerna. Dessa markörer representeras av pilar och specialsymboler för att markera de motstridiga ändringarna från olika grenar. Konfliktmarkörerna är följande:
<<<<<<< HEAD
: Anger början på ändringarna från nuvarande gren (master
i vårt fall);=======
: Avgränsar ändringarna från nuvarande gren (HEAD) och ändringarna från grenen som slås ihop;>>>>>>> feature/new-feature
: Markerar slutet på ändringarna från grenen som slås ihop.
För att lösa konflikterna kan vi antingen välja ändringen från nuvarande gren (master
), välja ändringen från grenen som slås ihop (feature/new-feature
) eller redigera ändringarna manuellt.
Låt oss manuellt redigera ändringarna genom att kombinera ändringarna från båda grenarna enligt följande steg:
1. Gå in i redigeringsläge
Först måste vi gå in i insert (redigerings-)läge i Vim genom att trycka på i
. Detta möjliggör redigering av texten.
2. Redigera den konfliktfyllda sektionen
Därefter ska vi kombinera raderna från båda grenarna efter varandra, så att filens innehåll blir enligt följande:
3. Avsluta redigeringsläge, spara och avsluta:
För att lämna insert-läget trycker vi på Escape-tangenten. Därefter, för att spara ändringarna och avsluta, skriver vi :wq
och trycker på Enter-tangenten:
Committa filen
Eftersom vi har löst konflikterna, lägg nu till branch_learning.txt
i staging area och kontrollera statusen:
Filen har ändrats och har faktiskt lagts till i staging area. Vi kan nu fortsätta med att committa den:
Återigen öppnas standardtextredigeraren (Vim i mitt fall) med standardmeddelandet för commiten gällande sammanslagningen:
Gå in i insert mode i Vim genom att trycka på i
och ändra detta meddelande genom att lägga till följande rad: Kept lines from both branches
för att ange hur vi löste konflikterna. Här är det kompletta commit-meddelandet:
För att lämna insert mode, spara ändringarna och avsluta Vim, tryck på Escape-tangenten och skriv sedan :wq
och tryck på Enter-tangenten.
Committen är genomförd och sammanslagningskonflikten är nu löst.
Låt oss nu titta på vår commit-historik som en graf (--graph
flagga) med en rad per commit (--oneline
flagga):
Här kan vi se vår senaste merge-commit och den karakteristiska formen av en trevägs-sammanslagning.
Tack för dina kommentarer!