Skip to content

Git Branching-strategi

Vi bruger Trunk-Based Development (TBD) — den tilgang der skalerer bedst med CI/CD og korte feedback-loops.


Princippet

main er altid deploybar. Alle integrerer til main mindst én gang om dagen. Feature branches er kortlivede (max 1-2 dage). Der er ingen langlivede develop- eller release-branches.

gitGraph
   commit id: "init"
   branch feature/add-auth
   checkout feature/add-auth
   commit id: "feat: add token validation"
   commit id: "feat: add refresh logic"
   checkout main
   merge feature/add-auth id: "merge: auth"
   branch fix/token-expiry
   checkout fix/token-expiry
   commit id: "fix: token expiry edge case"
   checkout main
   merge fix/token-expiry id: "merge: fix"
   commit id: "chore: bump deps"

Branch-navngivning

Type Mønster Eksempel
Feature feature/<kort-beskrivelse> feature/user-invitations
Bugfix fix/<kort-beskrivelse> fix/token-expiry-edge-case
Hotfix (prod) hotfix/<kort-beskrivelse> hotfix/null-pointer-checkout
Chore / deps chore/<kort-beskrivelse> chore/bump-php-82
Docs docs/<kort-beskrivelse> docs/update-api-reference

Brug kebab-case, hold det kort og beskrivende (max ~40 tegn).


Arbejdsflow

1. Hent seneste main

git switch main
git pull --rebase origin main

2. Opret feature branch

git switch -c feature/min-feature

3. Commit hyppigt med Conventional Commits

git commit -m "feat: add email verification step"
git commit -m "test: add unit tests for verification"
git commit -m "fix: handle empty email gracefully"

4. Push og åbn PR

git push -u origin feature/min-feature
# Åbn PR på GitHub — brug PR-template

5. Squash-merge til main (standard)

Vi squasher altid branches ved merge til main. Det holder historikken ren. GitHub PR-siden: vælg "Squash and merge".

6. Slet branch efter merge

GitHub sletter automatisk branches efter merge (konfigureret i repo-settings).


Feature Flags til store features

Har du en feature der tager mere end 2 dage? Brug en feature flag frem for en langlevet branch:

if (config('features.new_checkout_flow')) {
    // Ny logik
} else {
    // Eksisterende logik
}

Flag aktiveres per miljø i .env. Fjern flag + gammel kode når featuren er fuldt rullet ud.


Commit-format (Conventional Commits)

<type>(<scope>): <beskrivelse>

[valgfri body]

[valgfri footer: BREAKING CHANGE: ..., Closes #123]
Type Bruges til
feat Ny funktionalitet
fix Bugfix
docs Kun dokumentation
test Tilføjer eller retter tests
refactor Refaktorering (ingen ny feature, ingen bugfix)
chore Dependencies, CI, tooling
perf Performanceforbedring
ci CI/CD-konfiguration

Breaking changes

Tilføj ! efter typen eller BREAKING CHANGE: i footer:
feat!: remove deprecated auth endpoint


Tags og releases

Releases tagges på main med semantisk versionering:

git tag v2.3.0
git push origin v2.3.0

Brug GitHub Releases til release notes — generer automatisk fra PR-titler.