Conventional Branch 1.1.0
Zusammenfassung
Conventional Branch bezieht sich auf eine strukturierte und standardisierte Namenskonvention für Git-Branches, die darauf abzielt, Branches lesbarer und umsetzbarer zu machen. Wir haben einige Branch-Präfixe vorgeschlagen, die Sie verwenden könnten, aber Sie können auch Ihre eigene Namenskonvention festlegen. Eine einheitliche Namenskonvention erleichtert die Identifizierung von Branches nach Typ.
Wichtige Punkte
- Zweckgerichtete Branch-Namen: Jeder Branch-Name zeigt deutlich seinen Zweck an, wodurch es für alle Entwickler einfach wird zu verstehen, wofür der Branch gedacht ist.
- Integration mit CI/CD: Durch die Verwendung einheitlicher Branch-Namen können automatisierte Systeme (wie Continuous Integration/Continuous Deployment-Pipelines) dabei helfen, spezifische Aktionen basierend auf dem Branch-Typ auszulösen (z.B. automatische Bereitstellung von Release-Branches).
- Team-Zusammenarbeit: Es fördert die Zusammenarbeit innerhalb von Teams, indem der Branch-Zweck explizit gemacht wird, Missverständnisse reduziert werden und es Teammitgliedern erleichtert wird, zwischen Aufgaben ohne Verwirrung zu wechseln.
Spezifikation
Branch-Namens-Präfixe
Die Branch-Spezifikation unterstützt die folgenden Präfixe und sollte wie folgt strukturiert sein:
<typ>/<beschreibung>
Zweck-Präfixe — beschreiben die Absicht der Arbeit:
feature/(oderfeat/): Für neue Features (z.B.feature/add-login-page,feat/add-login-page)bugfix/(oderfix/): Für Fehlerbehebungen (z.B.bugfix/fix-header-bug,fix/header-bug)hotfix/: Für dringende Korrekturen (z.B.hotfix/security-patch)release/: Für Branches, die ein Release vorbereiten (z.B.release/v1.2.0)chore/: Für Nicht-Code-Aufgaben wie Abhängigkeiten, Dokumentation-Updates (z.B.chore/update-dependencies)
AI-Agenten-Quellpräfixe — identifizieren Branches, die von KI-Codierungsagenten erstellt wurden:
| Präfix | Agent | Anbieter | Seit |
|---|---|---|---|
ai/ |
Beliebiger KI-Agent | — | v1.1.0 |
claude/ |
Claude Code | Anthropic | v1.1.0 |
codex/ |
OpenAI Codex | OpenAI | v1.1.0 |
copilot/ |
GitHub Copilot | GitHub | v1.1.0 |
cursor/ |
Cursor | Anysphere | v1.1.0 |
Trunk-Branches (main, master, develop) verwenden kein Präfix.
Grundregeln
- Verwenden Sie kleine Buchstaben und Zahlen, Bindestriche und Punkte: Verwenden Sie immer Kleinbuchstaben (
a-z), Zahlen (0-9) und Bindestriche (-), um Wörter zu trennen. Vermeiden Sie Sonderzeichen, Unterstriche oder Leerzeichen. Für Release-Branches können Punkte (.) in der Beschreibung verwendet werden, um Versionsnummern darzustellen (z.B.release/v1.2.0). - Keine aufeinanderfolgenden, führenden oder nachfolgenden Bindestriche oder Punkte: Stellen Sie sicher, dass Bindestriche und Punkte nicht aufeinanderfolgen (z.B.
feature/new--login,release/v1.-2.0), noch am Anfang oder Ende der Beschreibung (z.B.feature/-new-login,release/v1.2.0.). - Halten Sie es klar und prägnant: Der Branch-Name sollte beschreibend aber prägnant sein und den Zweck der Arbeit klar angeben.
- Ticket-Nummern einbeziehen: Falls zutreffend, beziehen Sie die Ticket-Nummer aus Ihrem Projektmanagement-Tool ein, um die Verfolgung zu erleichtern. Zum Beispiel könnte für ein Ticket
issue-123der Branch-Namefeature/issue-123-new-loginlauten.
Formale Grammatik
Die folgende ABNF-Grammatik (Augmented Backus-Naur Form) definiert formal gültige Branch-Namen:
branch-name = trunk-branch / prefixed-branch
trunk-branch = "main" / "master" / "develop"
prefixed-branch = type "/" description
type = "feature" / "feat" / "bugfix" / "fix"
/ "hotfix" / "release" / "chore"
/ "ai" / "copilot" / "cursor"
/ "claude" / "codex"
description = desc-segment *("-" desc-segment)
desc-segment = 1*(ALPHA / DIGIT) *("." 1*(ALPHA / DIGIT))
ALPHA = %x61-7A ; Kleinbuchstaben a-z
DIGIT = %x30-39 ; Ziffern 0-9
Hinweis: Aufeinanderfolgende Bindestriche oder Punkte sowie Bindestriche oder Punkte am Anfang oder Ende der Beschreibung sind nicht erlaubt.
Beispiele
| Branch-Name | Gültig | Hinweise |
|---|---|---|
main |
✅ | Trunk-Branch |
master |
✅ | Trunk-Branch |
develop |
✅ | Trunk-Branch |
feature/add-login-page |
✅ | Neues Feature |
feat/add-login-page |
✅ | Kurzform für feature |
bugfix/fix-header-bug |
✅ | Fehlerbehebung |
fix/header-bug |
✅ | Kurzform für bugfix |
hotfix/security-patch |
✅ | Dringende Korrektur |
release/v1.2.0 |
✅ | Release mit Versionsnummer |
chore/update-dependencies |
✅ | Nicht-Code-Aufgabe |
feature/issue-123-new-login |
✅ | Feature mit Ticket-Nummer |
Feature/Add-Login |
❌ | Großbuchstaben nicht erlaubt |
feature/new--login |
❌ | Aufeinanderfolgende Bindestriche nicht erlaubt |
feature/-new-login |
❌ | Beschreibung darf nicht mit Bindestrich beginnen |
feature/new-login- |
❌ | Beschreibung darf nicht mit Bindestrich enden |
release/v1.-2.0 |
❌ | Bindestrich neben Punkt nicht erlaubt |
fix/header bug |
❌ | Leerzeichen nicht erlaubt |
fix/header_bug |
❌ | Unterstriche nicht erlaubt |
ai/refactor-auth-flow |
✅ | Generischer KI-Agenten-Präfix |
copilot/add-login-page |
✅ | GitHub Copilot |
cursor/fix-header-bug |
✅ | Cursor |
claude/security-patch |
✅ | Claude Code von Anthropic |
codex/optimize-query |
✅ | OpenAI Codex |
unknown/some-task |
❌ | Unbekannter Präfixtyp |
Fazit
- Klare Kommunikation: Der Branch-Name allein bietet ein klares Verständnis seines Zwecks und der Code-Änderung.
- Automatisierungsfreundlich: Lässt sich einfach in Automatisierungsprozesse einbinden (z.B. verschiedene Workflows für
feature,release, etc.). - Skalierbarkeit: Funktioniert gut in großen Teams, wo viele Entwickler gleichzeitig an verschiedenen Aufgaben arbeiten.
Zusammenfassend ist Conventional Branch darauf ausgelegt, die Projektorganisation, Kommunikation und Automatisierung innerhalb von Git-Workflows zu verbessern.
Werkzeuge
Verwenden Sie diese Werkzeuge, um Conventional Branch in Ihrem Projekt einzuführen und durchzusetzen:
- commit-check: Prüft Branch-Namen, Commit-Nachrichten und zugehörige Git-Metadaten lokal.
- commit-check-action: Validiert Branch-Namen automatisch in GitHub Actions.
- VSCode Conventional Branch: Erstellt Conventional-Branch-Namen aus Visual Studio Code.
- Conventional Branch Skill: Bringt KI-Coding-Assistenten bei, gültige Conventional-Branch-Namen zu erstellen.
Installieren Sie den Skill mit:
npx skills add conventional-branch/conventional-branch --skill conventional-branch
FAQ
Wie verhält sich Conventional Branch zu Conventional Commits?
Conventional Branch wurde von Conventional Commits inspiriert und verfolgt eine ähnliche Philosophie: menschlich- und maschinenlesbaren Struktur in Git-Metadaten einzubringen. Während Conventional Commits Commit-Nachrichten standardisiert, standardisiert Conventional Branch Branch-Namen. Die beiden Spezifikationen ergänzen sich auf natürliche Weise.
Warum sind Branch-Typen nicht so detailliert wie Conventional Commits (z. B. build, ci, docs, style, refactor)?
Branches unterscheiden sich von Commits – sie sind temporär und werden hauptsächlich bis zum Merge verwendet. Zu viele Typen für Branches einzuführen, wäre unnötig und würde sie schwerer zu verwalten und zu merken machen.
Kann ich eigene Branch-Typen über die aufgeführten hinaus definieren?
Ja. Die Spezifikation definiert eine empfohlene Menge von Typen, aber Teams können zusätzliche benutzerdefinierte Typen für ihren Workflow definieren. Es ist jedoch wichtig, benutzerdefinierte Typen klar zu dokumentieren, damit alle Teammitglieder und automatisierte Tools davon wissen.
Was sind die Hauptunterschiede zwischen v1.1.0 und v1.0.0?
v1.1.0 führt AI-Agenten-Quellpräfixe als wichtigstes neues Feature ein (siehe den nächsten FAQ-Eintrag für die Gründe). Außerdem bietet die versionierte Website einen Versionsumschalter, mit dem Benutzer sowohl die v1.0.0- als auch die v1.1.0-Spezifikation durchsuchen können. Alle vorhandenen v1.0.0-Branch-Namen bleiben vollständig gültig — keine breaking changes.
Warum AI-Agenten-Quellpräfixe hinzufügen?
KI-Codierungsagenten (GitHub Copilot, Cursor, Claude Code, OpenAI Codex usw.) werden zunehmend zur Codegenerierung und Erstellung von Pull Requests eingesetzt. Jeder Agent verwendet sein eigenes Branch-Präfix (z. B. copilot/, cursor/). Durch die Standardisierung dieser Präfixe in der Conventional-Branch-Spezifikation ermöglichen wir:
- Schnelle Identifikation — Prüfer und Tools können KI-generierte PRs sofort erkennen
- Tool-Validierung — Tools wie commit-check können KI-Agenten-Branches gegen die Spezifikation validieren
- Einen Registrierungsstandard — neue KI-Agenten können ein dokumentiertes Präfix übernehmen, anstatt Ad-hoc-Muster zu erfinden
Der generische ai/-Präfix steht für jeden KI-Agenten ohne dedizierten Präfix zur Verfügung, oder für Teams, die einen anbieterneutralen Identifikator bevorzugen. Dies ist das wichtigste neue Feature, das in v1.1.0 veröffentlicht wurde — eine vollständige Zusammenfassung der Änderungen zwischen den Versionen finden Sie im FAQ-Eintrag oben.
Wie soll ich mit langlebigen Branches wie develop oder staging umgehen?
In der formalen Grammatik dieser Spezifikation sind nur main, master und develop explizit als Trunk-Branches definiert und benötigen kein Präfix. Als projektspezifische Erweiterung können Teams jedoch zusätzliche langlebige Integrations- oder Umgebungs-Branches (z. B. staging, production) ohne Präfix verwenden, sofern diese konsistent benannt und in den eingesetzten Tools entsprechend konfiguriert bzw. dokumentiert sind.
Welche Tools können verwendet werden, um automatisch zu identifizieren, ob ein Teammitglied diese Spezifikation nicht erfüllt?
Sie können commit-check verwenden, um die Branch-Spezifikation zu überprüfen, oder commit-check-action, wenn Ihr Code auf GitHub gehostet wird.