# Conventional Commits ## Format - `(): ` — Grundform, Scope optional - `feat(auth): add login endpoint` — Beispiel mit Scope - `fix: prevent crash on empty input` — Beispiel ohne Scope - `imperativ, klein, kein Punkt am Ende` — Stil der Beschreibung ## Types - `feat` — neues Feature - `fix` — Bugfix - `refactor` — Umbau ohne Verhaltensänderung - `perf` — Performance-Verbesserung - `docs` — nur Dokumentation - `test` — Tests hinzufügen oder korrigieren - `style` — Formatierung, kein Code-Effekt - `build` — Build-System oder Dependencies - `ci` — CI-Konfiguration - `chore` — Sonstiges ohne src- oder Test-Änderung ## Breaking Changes - `feat(api)!: remove legacy endpoint` — `!` markiert einen Breaking Change - `BREAKING CHANGE: ` — alternativ als Footer im Commit-Body ## Body und Footer - `Leerzeile nach der Betreffzeile` — dann optionaler Body mit dem Warum - `Refs: #123` — Footer für Ticket-Referenzen - `Reverts: ` — Footer für Reverts ## Warum das Ganze - `feat` — löst ein Minor-Release aus (SemVer) - `fix` — löst ein Patch-Release aus (SemVer) - `!` oder `BREAKING CHANGE` — löst ein Major-Release aus - `git log --oneline --grep "^feat"` — Verlauf wird filterbar