Git Branching & Konflikthantering
Vad är en branchstrategi?
- En strategi för hur man arbetar med branches
- Hur man skapar, hanterar och slår samman branches
- Kan variera mellan team och projekt
Vi ska kolla närmare på Git Flow och GitHub Flow
Branch-strategier: Git Flow
- Lämplig för projekt med schemalagda releaser
- Två huvudgrenar: main/master och develop
- Passar desktop-appar, spel och inbäddad mjukvara
Git Flow: Stödgrenar
- feature/* (för nya funktioner)
- release/* (för releaseförberedelser)
- hotfix/* (för akuta bugfixar)
GitHub Flow
- Enklare alternativ till Git Flow
- Endast en huvudgren: main
- Feature branches för all utveckling
- Perfekt för continuous deployment (t.ex. webbappar, SaaS)
GitHub Flow: Användning
- Passar bäst för webapplikationer och SaaS
- Fördelar:
- Snabbare leveranser
- Mindre komplexitet
Pull Requests
- När en branch är klar
- Teamet granskar koden
- Slår samman till main/develop
- Det finns två sätt att slå samman branches: Merge och Rebase
Merge och Rebase
- Två sätt att lösa samma problem:
- Merge: Skapar en ny merge-commit
- Rebase: Flyttar dina commits ovanpå målbranchen
Merge
- Skapar en ny merge-commit
- Bevarar historiken
- Bra när flera utvecklare jobbar i samma branch
Merge: Exempel
git checkout main
git merge feature-branch
Rebase
- Flyttar dina commits ovanpå målbranchen
- Ger linjär historik
- Bra när du jobbar ensam i en branch
Rebase: Exempel
git checkout feature-branch
git rebase main
The golden rule
- Använd inte rebase på publika brancher
Merge-konflikter: Grunderna
- Uppstår när samma fil ändrats på samma ställe
- Git kan inte automatiskt lösa skillnaderna - vilket git ofta kan göra i andra fall
Hantera konflikter: Steg 1
git status # Visar filer med konflikter
Hantera konflikter: Steg 2
<<<<<<< HEAD
Din ändring
=======
Andra ändringen
>>>>>>> feature-branch
Hantera konflikter: Lösning
- Välj rätt version eller kombinera
- Markera som löst:
git add <filnamn>
git commit
Tips för att undvika konflikter
- Pull ofta från main/develop
- Kommunicera med teamet
- Håll feature branches korta