Cursusinhoud
GitHub Fundamentals
GitHub Fundamentals
De Repositories Synchroniseren
Zoals vermeld in het vorige hoofdstuk, moeten we onze lokale branch synchroniseren met de remote repository. Hiervoor voeren we het commando git pull
uit:
Toen we het commando git pull
uitvoerden, haalde Git updates op maar merkte dat onze lokale en remote branches uit elkaar zijn gelopen; er zijn dus wijzigingen op beide branches die moeten worden samengevoegd. Git kon niet doorgaan omdat het moet weten hoe deze verschillen moeten worden afgehandeld. Stel daarom de merge-optie in en voer het commando git pull
opnieuw uit:
We behandelen de rebase-operatie later in deze cursus.
Git heeft geprobeerd de lokale en externe wijzigingen in README.md
automatisch samen te voegen, maar er is een mergeconflict opgetreden. Laten we kijken naar de commit-boom, die aangeeft waar de divergentie en conflicten zijn ontstaan:
Het conflict oplossen
Zoals je kunt zien, delen onze huidige lokale commit en de commit in de remote main
branch een gemeenschappelijke voorouder, maar ze lopen uiteen, wat leidt tot het mergeconflict dat we moeten oplossen. Om dit te doen, openen we het README.md
-bestand in de Vim-editor:
Wat we kunnen doen om dit conflict op te lossen, is insert-modus activeren door op i
te drukken, de conflictmarkeringen te verwijderen en deze wijzigingen als volgt te combineren:
Vervolgens dient u op de Escape-toets te drukken, :wq
te typen en op de Enter-toets te drukken om de wijzigingen op te slaan en Vim af te sluiten. Nu moet, om de merge te voltooien, het bestand README.md
toegevoegd worden aan de staging area en vervolgens gecommit worden met de bijbehorende commando's:
Na het uitvoeren van het git commit
-commando wordt de standaard teksteditor geopend (hoogstwaarschijnlijk Vim). U kunt het standaard commitbericht laten staan en Vim op dezelfde manier afsluiten als zojuist, of u kunt het bericht aanpassen en daarna afsluiten.
Tot slot kunnen we veilig het git push
-commando uitvoeren en controleren of de three-way merge succesvol was door de commit tree weer te geven:
Laten we uiteenzetten wat we in deze twee hoofdstukken hebben gedaan:
We hebben samenwerking gesimuleerd door zowel lokaal als op afstand wijzigingen aan te brengen in het bestand
README.md
;We hebben eerst een wijziging direct in de remote repository doorgevoerd en daarna een andere wijziging lokaal gemaakt;
Toen we probeerden onze lokale wijzigingen te pushen, kwamen we een conflict tegen omdat de remote repository nieuwe updates had;
Om dit op te lossen, hebben we de wijzigingen van de remote repository opgehaald, wat resulteerde in een mergeconflict;
Vervolgens hebben we het conflict handmatig opgelost in het bestand
README.md
met behulp van de Vim-editor, de opgeloste wijzigingen gecommit en de uiteindelijke updates succesvol gepusht naar de remote repository.
Bedankt voor je feedback!