Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Løsning av Flettekonflikter | Arbeide med Grener i Git
Git Essentials

bookLøsning av Flettekonflikter

Løse konflikter

I forrige kapittel støtte vi på en flettingskonflikt, så nå er det på tide å løse den. Først åpner vi filen branch_learning.txt med Vim-editoren ved å bruke følgende kommando:

Hvis du ikke har Vim installert, kan du bruke andre tekstredigerere, som nano eller atom (erstatt vim med navnet på din tekstredigerer i kommandoen over). Vi anbefaler likevel sterkt å bruke Vim, siden det vil gjøre det enklere å følge veiledningen.

Her er filen vår åpnet i Vim-editoren:

Nå kan vi se markører som indikerer de konfliktfylte seksjonene. Disse markørene vises som piler og spesielle symboler for å fremheve motstridende endringer fra ulike grener. Konfliktmarkørene er følgende:

  • <<<<<<< HEAD: Indikerer starten på endringene fra nåværende gren (master i dette tilfellet);
  • =======: Skiller endringene fra nåværende gren (HEAD) og endringene fra grenen som flettes inn;
  • >>>>>>> feature/new-feature: Marker slutten på endringene fra grenen som flettes inn.

For å løse konfliktene kan vi enten velge endringen fra nåværende gren (master), velge endringen fra grenen som flettes inn (feature/new-feature), eller redigere endringene manuelt.

Vi skal manuelt redigere endringene ved å kombinere endringene fra begge grenene ved å følge disse stegene:

1. Gå inn i redigeringsmodus

Først må vi gå inn i insert (redigerings-)modus i Vim ved å trykke i. Dette gjør det mulig å redigere teksten.

2. Rediger den konfliktfylte delen

Deretter skal vi kombinere linjene fra begge grenene etter hverandre, slik at det endelige innholdet i filen blir som følger:

3. Avslutt redigeringsmodus, lagre og avslutt:

For å avslutte insert-modus, skal vi trykke på Escape-tasten. Deretter, for å lagre endringene og avslutte, skriver vi :wq og trykker på Enter-tasten:

Legge til filen i staging-området

Siden vi har løst konfliktene, legger vi nå til branch_learning.txt i staging-området og sjekker statusen:

Filen ble endret og faktisk lagt til i staging-området. Vi kan nå fortsette med å gjøre en commit:

Igjen åpnes standard teksteditor (Vim i mitt tilfelle) med standard commit-melding angående sammenslåingen:

Gå inn i insert mode i Vim ved å trykke i og endre denne meldingen ved å legge til følgende linje: Kept lines from both branches for å angi hvordan vi løste konfliktene. Her er den fullstendige commit-meldingen:

For å avslutte insert mode, lagre endringene og avslutte Vim, trykk Escape-tasten og skriv deretter :wq og trykk Enter-tasten.

Commiten er vellykket, og flettekonflikten er nå løst.

La oss nå se på vår commit-historikk som en graf (--graph flagg) med én linje per commit (--oneline flagg):

Her kan vi se vår siste merge-commit og den karakteristiske formen til en treveisfletting.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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

bookLøsning av Flettekonflikter

Sveip for å vise menyen

Løse konflikter

I forrige kapittel støtte vi på en flettingskonflikt, så nå er det på tide å løse den. Først åpner vi filen branch_learning.txt med Vim-editoren ved å bruke følgende kommando:

Hvis du ikke har Vim installert, kan du bruke andre tekstredigerere, som nano eller atom (erstatt vim med navnet på din tekstredigerer i kommandoen over). Vi anbefaler likevel sterkt å bruke Vim, siden det vil gjøre det enklere å følge veiledningen.

Her er filen vår åpnet i Vim-editoren:

Nå kan vi se markører som indikerer de konfliktfylte seksjonene. Disse markørene vises som piler og spesielle symboler for å fremheve motstridende endringer fra ulike grener. Konfliktmarkørene er følgende:

  • <<<<<<< HEAD: Indikerer starten på endringene fra nåværende gren (master i dette tilfellet);
  • =======: Skiller endringene fra nåværende gren (HEAD) og endringene fra grenen som flettes inn;
  • >>>>>>> feature/new-feature: Marker slutten på endringene fra grenen som flettes inn.

For å løse konfliktene kan vi enten velge endringen fra nåværende gren (master), velge endringen fra grenen som flettes inn (feature/new-feature), eller redigere endringene manuelt.

Vi skal manuelt redigere endringene ved å kombinere endringene fra begge grenene ved å følge disse stegene:

1. Gå inn i redigeringsmodus

Først må vi gå inn i insert (redigerings-)modus i Vim ved å trykke i. Dette gjør det mulig å redigere teksten.

2. Rediger den konfliktfylte delen

Deretter skal vi kombinere linjene fra begge grenene etter hverandre, slik at det endelige innholdet i filen blir som følger:

3. Avslutt redigeringsmodus, lagre og avslutt:

For å avslutte insert-modus, skal vi trykke på Escape-tasten. Deretter, for å lagre endringene og avslutte, skriver vi :wq og trykker på Enter-tasten:

Legge til filen i staging-området

Siden vi har løst konfliktene, legger vi nå til branch_learning.txt i staging-området og sjekker statusen:

Filen ble endret og faktisk lagt til i staging-området. Vi kan nå fortsette med å gjøre en commit:

Igjen åpnes standard teksteditor (Vim i mitt tilfelle) med standard commit-melding angående sammenslåingen:

Gå inn i insert mode i Vim ved å trykke i og endre denne meldingen ved å legge til følgende linje: Kept lines from both branches for å angi hvordan vi løste konfliktene. Her er den fullstendige commit-meldingen:

For å avslutte insert mode, lagre endringene og avslutte Vim, trykk Escape-tasten og skriv deretter :wq og trykk Enter-tasten.

Commiten er vellykket, og flettekonflikten er nå løst.

La oss nå se på vår commit-historikk som en graf (--graph flagg) med én linje per commit (--oneline flagg):

Her kan vi se vår siste merge-commit og den karakteristiske formen til en treveisfletting.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 6
some-alt