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


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! 🎓


Upp

Upp


Licens: Apache 2.0 | © 2023 Marcus Medina, Campus Mölndal. Alla rättigheter förbehållna.
Du får använda och modifiera detta verk enligt villkoren i Apache License, Version 2.0. Du får inte använda detta verk för kommersiella ändamål utan tillstånd från upphovsmannen.