De Repositories Synchroniseren
Veeg om het menu te tonen
Zoals vermeld in het vorige hoofdstuk, moeten we onze lokale branch synchroniseren met de remote repository. Hiervoor voeren we het commando git pull uit:
git pull
Toen we het commando git pull uitvoerden, haalde Git updates op maar merkte dat onze lokale en remote branches uit elkaar zijn gelopen, wat betekent dat er wijzigingen zijn op beide branches die moeten worden samengevoegd. Git kon niet doorgaan omdat het moet weten hoe deze verschillen moeten worden afgehandeld, dus laten we de optie merge instellen en het commando git pull opnieuw uitvoeren:
git config pull.rebase false
We behandelen de rebase-operatie later in deze cursus.
git pull
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:
git log --graph --oneline --all
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. Hiervoor openen we het bestand README.md in de Vim-editor:
vim README.md
Om dit conflict op te lossen, schakelen we over naar insert-modus door op i te drukken, verwijderen we de conflictmarkeringen en combineren we deze wijzigingen op de volgende manier:
Vervolgens druk je op de Escape-toets, typ je :wq en druk je op de Enter-toets om de wijzigingen op te slaan en Vim af te sluiten. Om de merge te voltooien, moet het bestand README.md nu toegevoegd worden aan de staging area en vervolgens gecommit worden met de bijbehorende commando's:
git add README.md
git commit
Na het uitvoeren van het commando git commit wordt de standaard teksteditor geopend (meestal Vim). Je kunt het standaard commitbericht laten staan en Vim op dezelfde manier afsluiten als zojuist, of je kunt het bericht aanpassen en daarna afsluiten.
Ten slotte kunnen we veilig het commando git push uitvoeren en verifiëren dat de drieweg-merge succesvol was door de commit-boom weer te geven:
git log --graph --oneline --all
Laten we samenvatten 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.mdmet behulp van de Vim-editor, de opgeloste wijzigingen gecommit en de definitieve updates succesvol gepusht naar de remote repository.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.