Git Branches - Parallell Utveckling som Proffs
Branches är som att ha multiple universes för din kod! Du kan experimentera, bygga features, och testa idéer utan att påverka huvudkoden. Mind blown? 🤯
🎯 Efter denna artikel kommer du att
- Förstå branch-konceptet - parallella utvecklingslinjer 🛤️
- Skapa och växla branches - feature branches som proffs 🔄
- Merge strategier - kombinera arbete säkert 🤝
- Hantera advanced workflows - som professionella team 💼
🛤️ Varför Branches är Awesome
Utan Branches (Scary!)
# Alla jobbar på main branch - KAOS!
main: Add login -> BROKEN CODE -> Fix login -> Add logout -> BROKEN AGAIN
😱 Kod är ofta broken, svårt att samarbeta, ångest för alla!
Med Branches (Zen!)
main: Stable -> Merge login -> Stable -> Merge logout -> Stable
↗ ↗
feature/login: Work on login --------↗
feature/logout: Work on logout -----------↗
😌 Main är alltid stabil, features utvecklas parallellt, inget kaos!
🎯 Feature Branch Workflow - Step by Step
Scenario: Lägg till en calculator-feature
Steg 1: Börja från main
git switch main
git pull # Hämta senaste ändringar
Steg 2: Skapa feature branch
git checkout -b feature/calculator
# Nu jobbar du på din isolerade branch!
Steg 3: Utveckla feature
// Skapa Calculator.cs
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
public int Subtract(int a, int b)
{
return a - b;
}
}
Steg 4: Commit på feature branch
git add .
git commit -m "feat: add Calculator class with Add and Subtract methods"
# Lägg till tester
git add .
git commit -m "test: add unit tests for Calculator methods"
# Finputsa
git add .
git commit -m "refactor: improve Calculator code documentation"
Steg 5: Synka med main (viktigt!)
# Växla till main och hämta senaste
git switch main
git pull
# Växla tillbaka och merge in main changes
git switch feature/calculator
git merge main # Hämta main's ändringar till din branch
Steg 6: Merge tillbaka till main
git switch main
git merge feature/calculator
git push
# Cleanup
git branch -d feature/calculator
🏢 Professionella Branch Strategies
Git Flow (The Classic)
main # Production code
develop # Integration branch
feature/login # Feature branches
feature/calculator
release/v1.2 # Release preparation
hotfix/critical-bug # Emergency fixes
GitHub Flow (The Simple)
main # Only one long-lived branch
feature/login # Feature branches merge direkt till main
feature/calculator # Via Pull Requests
Campus Mölndal Flow (Recommended för er)
main # Stable, working code
feature/my-name-calculator # Personal feature branches
feature/anna-user-login # Namnge med ert namn för tydlighet!
🚨 Branch Mistakes och Fixes
Misstag #1: Jobba på main istället för feature branch
# Du har jobbat på main, oh no!
git stash # Spara ändringar temporärt
git checkout -b feature/my-work
git stash pop # Återställ ändringar på rätt branch
Misstag #2: Glömde växla branch
# Committat på fel branch
git log --oneline # Se vilken branch du är på
git checkout correct-branch
git cherry-pick [commit-hash] # Kopiera commit till rätt branch
Misstag #3: Rörigt branch-träd
# Många old branches kvar
git branch # Se alla branches
git branch -d feature/old-stuff # Ta bort lokala branches
git push origin --delete feature/old-remote-branch
Misstag #4: Merge till main utan test
# ALLTID testa före merge till main!
git switch feature/my-branch
dotnet build # Byggtest
dotnet run # Körtest
# Om allt ok, då merge
🛡️ Branch Best Practices
Naming Conventions 📛
# ✅ Bra branch names:
feature/user-authentication
feature/marcus-calculator-ui
bugfix/fix-null-reference-error
hotfix/critical-security-patch
# ❌ Dåliga branch names:
my-branch
test
stuff
branch1
Branch Lifetime ⏰
- Feature branches: 1-7 dagar max
- Main branch: Forever (immortal!)
- Cleanup: Ta bort branches efter merge
Commit Strategy 💾
# På feature branch: många små commits ok
git commit -m "add basic structure"
git commit -m "implement add method"
git commit -m "add error handling"
git commit -m "improve documentation"
# Vid merge till main: kan squasha till färre commits
🚀 Nästa Level: Professional Workflows
När ni behärskar branches öppnar sig en hel värld:
Pull Requests / Merge Requests
- Code review innan merge
- Diskussion och feedback
- Automated testing before merge
CI/CD Integration
- Automated testing on branches
- Deployment pipelines
- Quality gates
Advanced Git Commands
git reflog # Se all Git history (lifesaver!)
git bisect # Binary search för att hitta buggar
git worktree # Multiple working directories
💡 Marcus Branch Philosophy
“Branches är som att ha superkrafter - du kan experimentera med kod utan rädsla, för du kan alltid gå tillbaka! Det är skillnaden mellan junior och senior utvecklare - seniors är inte rädda för att pröva saker.” 🦸♂️
Real example: I mitt senaste projekt hade vi 47 feature branches samtidigt - olika utvecklare jobbade på UI, backend, database, testing - allt parallellt. Utan branches hade det varit totalt kaos!
Pro insight: Första gången jag såg branching (år 2003) tänkte jag “detta är för komplext, varför inte bara backup-mappar?” 😅 Nu kan jag inte föreställa mig utveckling utan branches - det är som att försöka bygga ett hus utan ritningar!
Ready att become branch masters? Era Git-skills är nu on professional level! 🎓