Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Het Oplossen van Merge-Conflicten | Werken met Branches in Git
Git Essentials

Het Oplossen van Merge-Conflicten

Veeg om het menu te tonen

Conflicten oplossen

In het vorige hoofdstuk is er een merge-conflict opgetreden, dus nu is het tijd om dit op te lossen. Open eerst het bestand branch_learning.txt in de Vim-editor met het volgende commando:

vim branch_learning.txt
Vim openen

Als Vim niet is geïnstalleerd, kun je een andere teksteditor gebruiken, zoals nano of atom, door vim te vervangen door de naam van jouw editor in het bovenstaande commando.
Het wordt echter aanbevolen om Vim te gebruiken voor een betere aansluiting bij de hier getoonde stappen.

Hier is het bestand geopend in de Vim-editor:

Bestand met conflicten geopend in Vim

Nu zijn de conflictmarkeringen zichtbaar die de conflicterende secties aangeven.
Deze markeringen gebruiken pijlen en speciale symbolen om de verschillen tussen branches te benadrukken:

  • <<<<<<< HEAD: markeert het begin van de wijzigingen uit de huidige branch (master);
  • =======: scheidt de wijzigingen van de huidige branch (HEAD) en die van de branch die wordt samengevoegd;
  • >>>>>>> feature/new-feature: markeert het einde van de wijzigingen uit de samengevoegde branch.

Om het conflict op te lossen, kies een van de volgende opties:

  • Behoud de wijzigingen van de huidige branch (master);
  • Behoud de wijzigingen van de samengevoegde branch (feature/new-feature);
  • Handmatig bewerken van de inhoud.

Bewerk het bestand handmatig door de wijzigingen van beide branches te combineren met de volgende stappen:

1. Bewerkmodus activeren

Activeer eerst de insert-modus in Vim door op i te drukken. Hiermee kun je de tekst bewerken.

2. Bewerk het conflicterende gedeelte

Vervolgens de regels van beide branches achter elkaar combineren. De uiteindelijke inhoud van het bestand ziet er als volgt uit:

New branch
New line from the master branch
New line from the feature branch
Het conflict oplossen

3. Verlaat de bewerkmodus, sla op en sluit af

Druk op de Escape-toets om de invoegmodus te verlaten. Typ vervolgens :wq en druk op Enter om de wijzigingen op te slaan en Vim af te sluiten:

Vim afsluiten

Bestand committen

Nu de conflicten zijn opgelost, het bestand branch_learning.txt toevoegen aan de staging area en de status controleren:

git add branch_learning.txt
git status
Opgelost bestand toevoegen

Het bestand is gewijzigd en succesvol toegevoegd aan de staging area. Ga nu verder met het committen:

git commit
Het bestand committen

Opnieuw wordt de standaardteksteditor geopend (Vim in mijn geval) met het standaard commitbericht over de merge:

Standaard commitbericht

Ga in insert mode in Vim door op i te drukken en wijzig het bericht door de regel toe te voegen Kept lines from both branches om te beschrijven hoe de conflicten zijn opgelost.

Hier is het volledige commitbericht:

Merge branch 'feature/new-feature'

Kept lines from both branches

Om de invoegmodus te verlaten, de wijzigingen op te slaan en Vim af te sluiten, druk op de Escape-toets, typ vervolgens :wq en druk op Enter.

Het gewijzigde bericht opslaan en Vim afsluiten

De commit is geslaagd en het mergeconflict is nu opgelost.

Drieweg-merge

Laten we nu onze commitgeschiedenis als een grafiek bekijken (--graph vlag) met één regel per commit (--oneline vlag):

git log --graph --oneline
Commitgeschiedenis grafiek

Hier zie je de meest recente merge-commit samen met de kenmerkende structuur van een three-way merge.

question mark

Wat is de aanbevolen manier om een merge-conflict in Git op te lossen?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 6

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 4. Hoofdstuk 6
some-alt