Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Løsning af Fletningskonflikter | Arbejde med Grene i Git
Git Essentials

bookLøsning af Fletningskonflikter

Løsning af konflikter

I det forrige kapitel stødte vi på en sammenfletningskonflikt, så nu er det tid til at løse den. Først åbnes filen branch_learning.txt med Vim-editoren ved hjælp af følgende kommando:

Hvis du ikke har Vim installeret, kan du bruge andre teksteditorer, såsom nano eller atom (erstat vim med navnet på din teksteditor i kommandoen ovenfor). Det anbefales dog stærkt at bruge Vim, da det vil gøre det lettere at følge med.

Her er vores fil åbnet i Vim-editoren:

Nu kan vi se markører, der angiver de konfliktende sektioner. Disse markører er repræsenteret ved pile og specielle symboler for at fremhæve de konfliktende ændringer fra forskellige grene. Konfliktmarkørerne er følgende:

  • <<<<<<< HEAD: Angiver begyndelsen på ændringerne fra den aktuelle gren (master i dette tilfælde);
  • =======: Adskiller ændringerne fra den aktuelle gren (HEAD) og ændringerne fra den gren, der flettes ind;
  • >>>>>>> feature/new-feature: Marker slutningen på ændringerne fra den gren, der flettes ind.

For at løse konflikterne kan man enten vælge ændringen fra den aktuelle gren (master), vælge ændringen fra den gren, der flettes ind (feature/new-feature), eller redigere ændringerne manuelt.

Lad os manuelt redigere ændringerne ved at kombinere ændringerne fra begge grene ved at følge disse trin:

1. Gå ind i redigeringstilstand

Først skal vi gå ind i insert (redigerings)tilstand i Vim ved at trykke på i. Dette gør det muligt at redigere teksten.

2. Rediger det konfliktende afsnit

Dernæst skal vi kombinere linjerne fra begge grene efter hinanden, så det endelige indhold af filen bliver som følger:

3. Afslut redigeringstilstand, gem og afslut:

For at afslutte insert-tilstand skal vi trykke på Escape-tasten. Herefter skal vi for at gemme ændringerne og afslutte skrive :wq og trykke på Enter-tasten:

Commit af filen

Da vi har løst konflikterne, skal vi nu tilføje branch_learning.txt til staging-området og tjekke status:

Filen blev ændret og er nu tilføjet til staging-området. Vi kan nu fortsætte med commit:

Endnu en gang åbnes standard teksteditoren (Vim i dette tilfælde) med standard commit-beskeden vedrørende sammenfletningen:

Gå ind i insert mode i Vim ved at trykke på i og rediger denne besked ved at tilføje følgende linje: Kept lines from both branches for at angive, hvordan vi løste konflikterne. Her er den fulde commit-besked:

For at afslutte insert mode, gemme ændringerne og afslutte Vim, skal du trykke på Escape-tasten og derefter skrive :wq og trykke på Enter-tasten.

Committen er gennemført, og sammenfletningskonflikten er nu løst.

Lad os nu se på vores commit-historik som en graf (--graph flag) med én linje pr. commit (--oneline flag):

Her kan vi se vores seneste merge-commit og den karakteristiske form af et trevejs-merge.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 6

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 3.57

bookLøsning af Fletningskonflikter

Stryg for at vise menuen

Løsning af konflikter

I det forrige kapitel stødte vi på en sammenfletningskonflikt, så nu er det tid til at løse den. Først åbnes filen branch_learning.txt med Vim-editoren ved hjælp af følgende kommando:

Hvis du ikke har Vim installeret, kan du bruge andre teksteditorer, såsom nano eller atom (erstat vim med navnet på din teksteditor i kommandoen ovenfor). Det anbefales dog stærkt at bruge Vim, da det vil gøre det lettere at følge med.

Her er vores fil åbnet i Vim-editoren:

Nu kan vi se markører, der angiver de konfliktende sektioner. Disse markører er repræsenteret ved pile og specielle symboler for at fremhæve de konfliktende ændringer fra forskellige grene. Konfliktmarkørerne er følgende:

  • <<<<<<< HEAD: Angiver begyndelsen på ændringerne fra den aktuelle gren (master i dette tilfælde);
  • =======: Adskiller ændringerne fra den aktuelle gren (HEAD) og ændringerne fra den gren, der flettes ind;
  • >>>>>>> feature/new-feature: Marker slutningen på ændringerne fra den gren, der flettes ind.

For at løse konflikterne kan man enten vælge ændringen fra den aktuelle gren (master), vælge ændringen fra den gren, der flettes ind (feature/new-feature), eller redigere ændringerne manuelt.

Lad os manuelt redigere ændringerne ved at kombinere ændringerne fra begge grene ved at følge disse trin:

1. Gå ind i redigeringstilstand

Først skal vi gå ind i insert (redigerings)tilstand i Vim ved at trykke på i. Dette gør det muligt at redigere teksten.

2. Rediger det konfliktende afsnit

Dernæst skal vi kombinere linjerne fra begge grene efter hinanden, så det endelige indhold af filen bliver som følger:

3. Afslut redigeringstilstand, gem og afslut:

For at afslutte insert-tilstand skal vi trykke på Escape-tasten. Herefter skal vi for at gemme ændringerne og afslutte skrive :wq og trykke på Enter-tasten:

Commit af filen

Da vi har løst konflikterne, skal vi nu tilføje branch_learning.txt til staging-området og tjekke status:

Filen blev ændret og er nu tilføjet til staging-området. Vi kan nu fortsætte med commit:

Endnu en gang åbnes standard teksteditoren (Vim i dette tilfælde) med standard commit-beskeden vedrørende sammenfletningen:

Gå ind i insert mode i Vim ved at trykke på i og rediger denne besked ved at tilføje følgende linje: Kept lines from both branches for at angive, hvordan vi løste konflikterne. Her er den fulde commit-besked:

For at afslutte insert mode, gemme ændringerne og afslutte Vim, skal du trykke på Escape-tasten og derefter skrive :wq og trykke på Enter-tasten.

Committen er gennemført, og sammenfletningskonflikten er nu løst.

Lad os nu se på vores commit-historik som en graf (--graph flag) med én linje pr. commit (--oneline flag):

Her kan vi se vores seneste merge-commit og den karakteristiske form af et trevejs-merge.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 6
some-alt