Merge
Att föra ihop ändringarna från två branches till en. Git gör det automatiskt när det går och ber om hjälp när samma rader ändrats på olika sätt.
- Kallas även
- sammanslagning, sammanfogning
- Kategori
- Git
Merge, sammanslagning, sammanfogning, sammanslagningar, slå ihop, sammanfoga
Enkel förklaring
Att göra en merge betyder att föra ihop två branches. Ändringarna från den ena grenen
läggs till i den andra, oftast från en arbetsgren in i huvudgrenen main.
Har de två grenarna ändrat olika filer, eller olika delar av samma fil, sköter Git det själv. Har båda ändrat samma rad på olika sätt kan Git inte veta vilken version som ska gälla. Det kallas en konflikt, och då får en människa bestämma.
I Forgejos svenska gränssnitt kallas en merge sammanfogning.
Teknisk förklaring
Git gör en merge på ett av två sätt:
- Fast-forward: har huvudgrenen inte ändrats sedan arbetsgrenen skapades, flyttas bara huvudgrenens pekare fram. Ingen ny commit behövs.
- Merge-commit: har båda grenarna nya commits skapas en ny commit med två föregångare, en från varje gren.
Vid en konflikt markerar Git de omstridda raderna i filen med <<<<<<<, ======= och >>>>>>>. Man
väljer vad som ska gälla, tar bort markeringarna och sparar resultatet som en commit.
Praktiskt exempel
$ git switch main$ git merge ny-lektionI Forgejo görs en merge oftast med en knapp på pull requesten. I det svenska gränssnittet heter knappen Skapa sammanfogningsincheckning. Namnet säger vad som händer: Forgejo skapar en ny commit som för ihop de två grenarna.
Så här ser en konflikt ut i en fil, när två grenar har ändrat samma rad:
<<<<<<< HEADDag 2: Uppsala=======Dag 2: Västerås>>>>>>> ny-resplanNär och varför används det?
En merge görs när arbetet på en gren är klart och godkänt. Det är så ändringar kommer in i huvudversionen.
Rekommendation:
- För in ändringar ofta, i små steg. Ju mindre som skiljer grenarna åt, desto färre konflikter.
- Läs igenom resultatet efter en konflikt, och kör testerna, innan du sparar.
Vanliga missförstånd
- “En konflikt betyder att något har gått sönder.” Nej. Git säger bara att det inte kan avgöra vilken av två ändringar som ska gälla. Inget har försvunnit.
- “Efter en merge försvinner grenen.” Nej. Grenen finns kvar tills någon tar bort den. Många tjänster erbjuder att ta bort den efteråt.
- “Merge och pull request är samma sak.” Pull requesten är förslaget och diskussionen. Mergen är själva sammanförandet, som görs när förslaget godkänns.