Meer informatie over mergen
Wat is mergen?
Mergen is het samenvoegen van twee branches. Hierbij worden de bestanden van de branches met elkaar vergeleken en indien er geen conflicten zijn, zullen de bestanden samengevoegd worden in de branch die aangegeven is als ontvanger.
Als je merged, dan moet je de veranderingen nog wel pushen, zodat de veranderingen niet alleen op de lokale repository staan, maar ook op de remote.
Merge conflicten
Bij mergen kunnen er conflicten ontstaan. Dit betekent dat Git bestanden tegenkomt bij twee verschillende commits waarbij veranderingen zijn doorgevoerd die elkaar overlappen. Deze moeten opgelost zijn voordat de merge doorgevoerd kan worden.
Hoe zit mergen in elkaar?
Voor mergen heb je twee verschillende branches nodig. Voor deze uitleg hebben we een dev
-branch en een feature
-branch. Zodra er veranderingen zijn gemaakt op de feature
-branch en je wil dit samenvoegen met de dev
-branch ga je mergen. Git kijkt naar het verschil tussen de feature
-branch bestanden en de dev
-branch bestanden.
Als de veranderingen (bijvoorbeeld een nieuwe methode/functie, nieuw bestand, etc.) op de feature
-branch geen overlap hebben met de dev
-branch, dan zullen de bestanden gelijk gemerged worden.
Als Git niet automatisch kan bepalen welke versie (feature
-branch of dev
-branch versie) behouden moet worden, zal er een merge conflict ontstaan. Hierbij moet zelf bepaald worden welke versie behouden moet worden. Zodra de conflicten zijn opgelost, dan kan de merge doorgevoerd worden.
Merge conflicten oplossen
Merge conflicten kunnen opgelost worden op GitHub zelf, zie Figuur 1. Hierbij moet je zelf de regels/lines weghalen die niet meer relevant zijn.
Figuur 1: Voorbeeld van merge conflicten op de GitHub pagina
Via GitHub Desktop kunnen merge conflicten ook worden opgelost. Hierbij zal er bij het mergen een pop-up melding komen met welke bestanden conflicten opleveren en hierbij krijgt je de mogelijkheid om dit bestand te openen in de standaard editor. In de editor zal het op dezelfde manier worden weergegeven als in Figuur 1.
Wat kan je met mergen?
Zoals hiervoor is uitgelegd, kan je met mergen verschillende branches samenvoegen, een paar voorbeeld van hoe mergen gebruikt kan worden:
- Feature branches samenvoegen: Als gebruik gemaakt wordt van feature branches zullen deze samengevoegd moeten worden op een andere branch.
- Bugfixes doorvoeren: Bugfix-branch zullen samengevoegd worden met branches als er kleine problemen zijn opgelost.
- Release branches doorvoeren naar main of production: Als eenmaal alle features voor een periode zijn goedgekeurd en getest moeten release branches gemerged worden met een
main
ofproduction
branch. - Het ophalen van andermans werk: Als een ander project lid al werk naar een
dev
-branch heeft gepusht, kan het handig zijn deze gelijk op te halen (te mergen) met de feature-branch waar op het moment aan gewerkt worden.
Na het mergen zijn de twee branches identiek aan elkaar qua bestanden. Neem een dev
- en feature
-branch. Als de feature
-branch gemerged is met de dev
-branch, dan kan je de feature
-branch verwijderen als die niet meer gebruikt zal worden. Hiermee zorg je ervoor dat de lijst van branches opgeschoond blijft.
Casus
Anne en Bert hebben samen een project. Er bestaat een
dev
-branch en twee feature-branches (feature/add-cart-discounts
enfeature/cart-total-calculation
). Beide branches zijn aangemaakt op basis van dedev
-branch.Anne heeft hard gewerkt aan de berekening van het winkelmandje op
feature/cart-total-calculation
en gaat dit mergen met dedev
-branch. Hierbij komen geen conflicten en kan dit gelijk mergen en pusht dit daarna naar de remote repository.Bert is ook klaar met de kortingcodes en gaat
feature/add-cart-discounts
mergen met dedev
-branch. Hierbij komen alleen wat conflicten. Bert gaat vergelijken wat er anders is en ziet dat dat het werk van Anne is geweest. Samen bekijken zij de merge conflicten en lossen deze op. De merge kan na het oplossen worden doorgevoerd en pusht ook zijn veranderingen naar de remote repository.
Bronnen
Mergen: https://git-scm.com/docs/git-merge
Uitleg van mergen met figuren: https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging
Volgende stap: 6. Git Pull requests