Sobes.tech
Junior

Hoe los je conflicten op in Git?

sobes.tech AI

Antwoord van AI

Conflicten in Git ontstaan wanneer twee deelnemers hetzelfde deel van een bestand wijzigen of wanneer één een bestand verwijdert terwijl de ander het wijzigt.

Om conflicten op te lossen, worden meestal de volgende stappen gevolgd:

  1. Lokale repository bijwerken: Zorg dat je de meest recente versie van de code hebt van de remote repository.

    // Haal de laatste wijzigingen op van de remote repository
    git pull origin <branch-name>
    
  2. Identificatie van conflicterende bestanden: Git geeft aan in welke bestanden conflicten zijn.

    // Toon de status van de repository en conflicterende bestanden
    git status
    

    In de bestanden zie je conflictmarkers, bijvoorbeeld:

    <<<<<<< HEAD
    // Jouw lokale wijzigingen
    =======
    // Inkomende wijzigingen van de remote branch
    >>>>>>> <commit-hash>
    
    • <<<<<<< HEAD: begin van jouw lokale wijzigingen.
    • =======: scheiding tussen jouw wijzigingen en de inkomende.
    • >>>>>>> <commit-hash>: einde van de inkomende wijzigingen met de hash van de commit.
  3. Handmatige bewerking van bestanden: Open het conflictbestand in een teksteditor en verwijder handmatig de conflictmarkers, laat alleen de benodigde code over. Bepaal welke versie van de code je wilt behouden of combineer beide.

  4. Toevoegen van gecorrigeerde bestanden: Na het oplossen van het conflict in het bestand, voeg je het toe aan de index.

    // Voeg het opgeloste bestand toe aan de index
    git add <conflicted-file>
    

    Herhaal deze stap voor alle conflicterende bestanden.

  5. Aanmaken van een commit voor conflictoplossing: Na het toevoegen van alle opgeloste bestanden, maak je een commit. Git stelt automatisch een bericht voor dat wijst op de conflictoplossing.

    // Maak een conflictoplossingscommit
    git commit
    

    Je kunt dit bericht aanpassen voordat je het opslaat.

  6. Verzenden van de wijzigingen: Stuur de opgeloste wijzigingen naar de remote repository.

    // Verstuur de wijzigingen naar de remote repository
    git push origin <branch-name>
    

Tools voor conflictoplossing:

Voor gebruiksgemak kunnen grafische merge tools worden gebruikt, zoals:

  • Kdiff3
  • Meld
  • VS Code Merge Editor
  • IDE's (IntelliJ IDEA, PyCharm, etc.) met ingebouwde tools

Om een externe tool voor conflictoplossing te configureren:

// Configuratie van de externe merge tool (voorbeeld voor opendiff)
git config --global merge.tool opendiff
// Start de tool
git mergetool

Het is belangrijk om tijdig wijzigingen van de remote repository op te halen (git pull), omdat dit helpt het aantal conflicten te minimaliseren.