Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Att Lösa Sammanslagningskonflikter | Arbeta med Grenar i Git
Git-Grunder

bookAtt 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.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 6

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

Suggested prompts:

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

bookAtt 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.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 6
some-alt