Zum Inhalt springen
Aback Tools Logo

Git-Fehler 'is not a valid branch name': Regeln, Behebungen & Konventionen

Der Git-Fehler "is not a valid branch name" erklärt: die vollständige Liste der Refname-Regeln, häufige Ursachen mit Einzeiler-Lösungen, das sichere Umbenennen ungültiger Branches, plattformspezifische Regeln für GitHub/GitLab/Windows und Team-Namenskonventionen.

DH
Tutorials & How-Tos11 Min. Lesezeit2,600 Wörter

Der Git-Fehler "is not a valid branch name" ist eindeutig: der von Ihnen angegebene Name verletzt eine oder mehrere Refname-Regeln von Git. Die Behebung ist fast immer eine Einzeiler-Änderung, sobald Sie wissen, welches Zeichen oder Muster sie ausgelöst hat. Dieser Leitfaden deckt den vollständigen Satz der Git-Namensbeschränkungen ab, die häufigsten Ursachen mit exakten Behebungen, wie man einen bereits existierenden Branch umbenennt und wie man gültige Namensgebung im gesamten Team durchsetzt, bevor überhaupt jemand auf den Fehler stößt.

14+Verbotene Musterlaut Git-Refname-Spezifikation
1 cmdZum Umbenennen eines Branchgit branch -m old new
0Harte Längenbegrenzungaber 50-72 Zeichen empfohlen

Was der Fehler bedeutet

Wenn Git `fatal: 'some-name' is not a valid branch name` meldet, bedeutet das, dass die als Branchnamen übergebene Zeichenfolge die Refname-Spezifikation von Git verletzt - die Regeln, die festlegen, was ein gültiger Referenzname in einem Git-Repository ist. Git verwendet dieselben Regeln für Branchnamen, Tag-Namen und Remote-Tracking-Namen, da alle als Referenzen im Verzeichnis `.git/refs/` gespeichert werden.

Die Validierung findet statt, bevor ein Objekt geschrieben wird. Git führt den vorgeschlagenen Namen intern durch `check_refname_format()` und bricht mit dem Fehler ab, wenn der Name scheitert. Das bedeutet, Sie sehen den Fehler sofort beim Ausführen von `git checkout -b`, `git branch` oder `git switch -c` - es gibt keinen Teilzustand zu bereinigen.

Wo der Fehler auftritt

  • `git checkout -b branch-name` - einen neuen Branch erstellen und dorthin wechseln
  • `git branch branch-name` - einen neuen Branch erstellen, ohne zu wechseln
  • `git switch -c branch-name` - das moderne Äquivalent zu checkout -b
  • `git push origin branch-name` - Push auf ein Remote mit ungültigem lokalem Namen
  • CI/CD-Skripte - wenn ein Branchnamen programmiertechnisch aus einer Ticket-ID oder Commit-Nachricht konstruiert wird

Note

Die vollständige Git-Fehlermeldung zitiert den exakten Namen, der scheiterte: `fatal: 'my feature branch' is not a valid branch name`. Der zitierte Wert ist die literale Zeichenfolge, die Git erhalten hat - einschließlich Leerzeichen, Sonderzeichen oder shell-expandierter Werte. So lässt sich leichter feststellen, welches Zeichen das Problem verursacht hat.

Namensregeln für Git-Branches

Die Refname-Spezifikation von Git (definiert in der Manpage von `git-check-ref-format`) beschreibt einen präzisen Satz verbotener Zeichen und Muster. Die Regeln einmal gelernt, verhindern alle künftigen Namensfehler - es gibt keine mehrdeutigen Fälle, wenn man die vollständige Liste kennt.

Explizit verbotene Zeichen und Sequenzen

  • Leerzeichen (ASCII 0x20) - der häufigste Fehler; verwenden Sie stattdessen `-` oder `_`.
  • Tilde `~` - verwendet in der Reflog-Notation (`branch~2` bedeutet zwei Commits vor der Spitze).
  • Caret `^` - verwendet in der Revisionsnotation (`branch^` bedeutet der Eltern-Commit).
  • Doppelpunkt `:` - verwendet in der Fetch-Refspec-Notation (`refs/heads/main:refs/heads/main`).
  • Fragezeichen `?` - Glob-Platzhalterzeichen in Ref-Mustern.
  • Sternchen `*` - Glob-Platzhalterzeichen in Ref-Mustern.
  • Eckige Klammer auf `[` - öffnet eine Glob-Zeichenauswahl.
  • Backslash `\\` - Pfadtrenner unter Windows; verboten, um plattformübergreifende Probleme zu vermeiden.
  • Doppelter Punkt `..` - verwendet in der Bereichsnotation (`main..feature`).
  • @{ Sequenz - Reflog-Kurzschrift (`branch@{1}` ist ein Reflog-Eintrag).

Positionale und strukturelle Regeln

  • Darf nicht mit einem Punkt beginnen (`.`) - Konvention versteckter Dateien; `.hidden` ist kein gültiger Anfang.
  • Darf nicht mit einem Punkt enden (`.`) - mehrdeutig mit der Endung `.lock` und der Dateierweiterungsnotation.
  • Darf nicht mit `.lock` enden - Git nutzt das Suffix `.lock` für Sperrdateien; jeder Pfadkomponente, die auf `.lock` endet, ist verboten.
  • Darf nicht mit einem Bindestrich beginnen (`-`) - kollidiert mit dem Parsen von Kommandozeilenoptionen.
  • Darf keine aufeinanderfolgenden Punkte enthalten (`..`) - Konflikt mit der Bereichsnotation (siehe oben).
  • Darf nicht das einzelne Zeichen `@` sein - Kurzschrift für `HEAD`.
  • Darf keine Steuerzeichen enthalten - ASCII-Zeichen unter 0x20 und DEL (0x7F) sind verboten.
  • Darf nicht leer sein - eine leere Zeichenfolge ist kein gültiger Name.
valid and invalid examples
bash
# ✓ Valid branch names
git checkout -b feature/add-login
git checkout -b fix/null-pointer-123
git checkout -b release/v2.1.0
git checkout -b chore_update-deps
git checkout -b users/alice/experiment

# ✗ Invalid - contains a space
git checkout -b "my feature"
# fatal: 'my feature' is not a valid branch name

# ✗ Invalid - double dot
git checkout -b feature..login
# fatal: 'feature..login' is not a valid branch name

# ✗ Invalid - ends with .lock
git checkout -b release.lock
# fatal: 'release.lock' is not a valid branch name

# ✗ Invalid - starts with hyphen
git checkout -b -hotfix
# fatal: '-hotfix' is not a valid branch name

Tip

Führen Sie `git check-ref-format --branch ihr-vorgeschlagener-name` aus, um einen Namen zu testen, bevor Sie den Branch erstellen. Es terminiert mit Code 0, wenn der Name gültig ist, und mit 1, wenn nicht - nützlich in Skripten und Pre-Commit-Hooks. Für eine browserbasierte Prüfung mit Team-Konventionsunterstützung nutzen Sie den [Branchnamen-Konventionsvalidator](/tools/data/validators/branch-name-convention-validator).

Häufige Ursachen und Behebungen

Die meisten Vorkommen dieses Fehlers stammen aus einer kleinen Zahl sich wiederholender Muster. Jedes hat eine spezifische Ursache und eine spezifische Einzeiler-Behebung.

Leerzeichen aus kopierten Tickertiteln

Der häufigste Auslöser ist das direkte Kopieren eines Ticket- oder Story-Titels in den Branchnamen. „Add user login form" wird zu `git checkout -b Add user login form`, was Git als drei separate Argumente sieht und den Branchnamen `Add` ablehnt. Behebung: ersetzen Sie jedes Leerzeichen durch einen Bindestrich. Viele Teams automatisieren das mit einem `branch-from-ticket`-Alias oder -Skript, das den Titel transformiert, bevor er an Git übergeben wird. Der Slug-Generator wandelt beliebigen Text in einen sauberen, bindestrichgetrennten Slug um, der für Branchnamen geeignet ist.

Sonderzeichen in der Variableninterpolation von CI/CD

CI-Pipelines konstruieren Branchnamen oft aus Umgebungsvariablen - PR-Titel, Commit-Nachrichten oder Jira-Ticket-IDs. Enthält einer dieser Werte ein Sonderzeichen (ein Doppelpunkt in einer Jira-ID wie `PROJECT:123` oder ein Schrägstrich in einem Semver-Tag wie `v1.0.0/rc.1`), scheitert der interpolierte Branchname. Behebung: bereinigen Sie die Eingabe, bevor Sie sie als Branchnamen verwenden. Ersetzen Sie nicht-alphanumerische Zeichen durch Bindestriche und entfernen Sie führende und nachgestellte Bindestriche und Punkte.

Punkt am Ende oder .lock-Suffix

Ein Branchname, der mit einem Punkt endet (`feature.`) oder mit `.lock` endet (`release.lock`), scheitert, weil Git diese Muster für Sperrdateien reserviert. Dieser Fehler tritt typischerweise auf, wenn ein Entwickler versehentlich einen Namen mit Punkt am Ende eingibt, oder wenn ein Skript `.lock` an einen generierten Namen anhängt. Behebung: entfernen Sie den Punkt am Ende oder ersetzen Sie `.lock` durch ein gültiges Suffix wie `-locked` oder `-pending`.

Ungültiges MusterBeispielBehebung
Leerzeichenfeature/add loginfeature/add-login
Doppelter Punktfeat..loginfeat/login
Tildehotfix~v2hotfix-v2
DoppelpunktPROJECT:123PROJECT-123
Punkt am Enderelease.release
Endet auf .lockfix.lockfix-pending
Beginnt mit Bindestrich-bugfixbugfix
@ gefolgt von {user@{branch}user-branch
Backslashfeature\\loginfeature/login

Branchnamen-Konventionsvalidator

Validieren Sie Git-Branchnamen gegen die vollständige Refname-Spezifikation und die Konvention Ihres Teams - browserlokal, sofortiges Feedback, ohne Einrichtung.

Open tool

Einen ungültigen Branch umbenennen

In seltenen Fällen - insbesondere mit älteren Git-Versionen oder über Drittanbieter-Tools erstellten Branches - kann ein ungültiger Branchname bereits in Ihrem Repository gelandet sein. Modernes Git verhindert das bei der Erstellung, aber wenn Sie ein Repository mit problematischem Branchnamen erben, ist das die Behebung.

1

Lokalen Branch umbenennen

Führen Sie `git branch -m old-name new-name` aus, um den Branch in Ihrem lokalen Repository umzubenennen. Die Option `-m` verschiebt (benennt um) die Branch-Referenz, ohne die Commit-Historie anzufassen. Enthält der alte Name Zeichen, die das Quoting in Ihrer Shell erschweren, verwenden Sie einfache Anführungszeichen: `git branch -m 'old name with spaces' new-valid-name`.

2

Neuen Namen zum Remote pushen

Nach dem lokalen Umbenennen pushen Sie den neuen Branch zum Remote: `git push origin new-valid-name`. Damit wird der neue Branch auf dem Remote erstellt. Wurde der alte Branch bereits gepusht, sollten Teammitglieder ihre lokale Tracking-Referenz mit `git fetch --prune` aktualisieren, nachdem Sie den alten Remote-Branch gelöscht haben.

3

Alten Remote-Branch löschen

Entfernen Sie den alten Remote-Branch: `git push origin --delete old-name`. Auf GitHub, GitLab und Bitbucket können Sie Branches auch über die Weboberfläche in der Branchliste umbenennen - das ist die sicherere Option, wenn der alte Name Zeichen enthält, die sich ohne Escaping schwer über die CLI übergeben lassen.

4

Offene Pull Requests aktualisieren

Hat der umbenannte Branch offene Pull Requests, aktualisieren die meisten Plattformen (GitHub, GitLab) automatisch die Basisbranch-Referenz des PR, wenn Sie über die Weboberfläche umbenennen. Haben Sie per CLI umbenannt, prüfen Sie Ihre offenen PRs und aktualisieren Sie die Head-Branch-Referenz bei Bedarf manuell. CI-Läufe gegen den alten Branchnamen müssen ebenfalls gegen den neuen Namen neu ausgelöst werden.

Warning

Benennen Sie keinen Branch um, der aktuell der Default-Branch ist (`main` oder `master`), ohne zuerst Ihre Repository-Einstellungen zu aktualisieren. Wird der Default-Branch umbenannt, ohne den Remote-HEAD-Zeiger zu aktualisieren, checkt `git clone` bei allen nachfolgenden Klons standardmäßig den falschen Branch aus.

Plattformspezifische Namensregeln

Die Refname-Regeln von Git selbst sind die Basis. Remote-Hosting-Plattformen legen zusätzliche Beschränkungen darüber - ein Name, der die lokale Git-Validierung besteht, kann beim Push zu GitHub oder GitLab trotzdem scheitern. Das Verständnis der plattformspezifischen Regeln verhindert die Frustration eines Namens, der lokal funktioniert, aber remote fehlschlägt.

Zusätzliche GitHub-Beschränkungen

GitHub lehnt Branchnamen ab, die auf `.lock` in irgendeiner Pfadkomponente enden (nicht nur das letzte Segment), Namen mit aufeinanderfolgenden Punkten an irgendeiner Position und Namen mit Nullbyte. GitHub setzt zudem eine maximale Branchnamenlänge von 255 Byte durch. Die GitHub-Weboberfläche entfernt außerdem führende und nachgestellte Leerzeichen von über die Oberfläche erstellten Branchnamen.

Zusätzliche GitLab-Beschränkungen

GitLab ergänzt Beschränkungen für geschützte Branch-Muster - Namen mit `*`-Platzhaltern sind für geschützte Branch-Regeln reserviert und können nicht als literale Branchnamen verwendet werden. GitLab reserviert auch Branchnamen, die seinem internen Namespacing entsprechen, etwa `protected` und `refs`. Branchnamen länger als 255 Zeichen werden abgelehnt. Die Namensvalidierung der GitLab-CI-Pipeline ist getrennt von der Git-Refname-Validierung - CI-Variablen-Interpolationsfehler erscheinen als Pipeline-Fehler, nicht als Git-Fehler.

Überlegungen zum Windows-Dateisystem

Unter Windows speichert das Verzeichnis `.git/refs/heads/` jeden Branch als Datei. Das bedeutet, alle Windows-Dateinamensbeschränkungen gelten: Namen dürfen keine `<`, `>`, `"`, `|`, `?` oder `*` enthalten; Namen dürfen nicht mit Leerzeichen oder Punkt enden; und Namen sind auf NTFS groß-/kleinschreibungsunempfindlich. Die Case-Insensitivität ist in gemischten Teams besonders wichtig - `Feature/Login` und `feature/login` sind unter Windows derselbe Branch, aber unter Linux und macOS unterschiedliche Branches.


RegelGit-KernGitHubGitLabWindows-Dateisystem
Keine Leerzeichen✓✓✓✓
Kein .lock-Suffix✓✓ jede Komponente✓✓
Keine doppelten Punkte✓✓✓✓
Kein führender Bindestrich✓✓✓✓
Max. 255 Byte✗ (kein Limit)✓✓OS-Pfadlimit
Groß-/kleinschreibungsunempfindlich✗✗✗✓ (NTFS)
Kein * als literaler Name✓✓✓ reserviertN/A

Branch-Namenskonventionen nach Team

Gültig ist das Minimum, nicht das Maximum. Ein Branchname kann gemäß den Git-Regeln gültig sein und dennoch unklar, inkonsistent oder im Workflow Ihres Teams unbrauchbar sein. Etablierte Konventionen fügen über der technischen Gültigkeit Vorhersehbarkeit hinzu - jedes Teammitglied kann einen Branchnamen lesen und sofort Zweck, Umfang und Lebenszyklus verstehen.

Gitflow-Konvention

Gitflow verwendet fünf Branch-Typen: `main` (Produktion), `develop` (Integration), `feature/beschreibung`, `release/version` und `hotfix/beschreibung`. Branchnamen nutzen die Kategorie als Präfix, gefolgt von einem Schrägstrich und einer bindestrichgetrennten Beschreibung. Release-Branches enthalten die Versionsnummer (`release/1.4.0`). Diese Konvention wird von den meisten Git-GUI-Clients und CI-Tools gut unterstützt, die die Präfixe als Branch-Kategorien erkennen.

GitHub-Flow und trunk-basierte Konventionen

GitHub Flow nutzt eine einfachere Struktur: `main` plus kurzlebige Feature-Branches mit beschreibenden Namen (`add-oauth-login`, `fix-pagination-bug`). Trunk-basierte Entwicklung nutzt ebenso `main` plus sehr kurzlebige Branches, die innerhalb von Stunden gemerged werden. Beide Ansätze bevorzugen kurze, kleingeschriebene, bindestrichgetrennte Namen ohne Kategoriepräfixe - die Annahme ist, dass Branchnamen temporär sind und der PR-Titel und die Beschreibung den Kontext tragen.

Ticket-Referenz-Konventionen

Viele Teams stellen Branchnamen eine Ticket-Referenz voran: `JIRA-1234-fix-login-bug` oder `feat/GH-456-add-dark-mode`. Die Ticket-ID schafft Rückverfolgbarkeit zwischen dem Branch und dem ursprünglichen Arbeitselement. Beim programmierten Aufbau dieser Namen bereinigen Sie stets den Ticket-Beschreibungsteil - Tickertitel enthalten häufig Doppelpunkte, Schrägstriche und andere Zeichen, die die Git-Namensregeln brechen.

Branchnamen sind, wie Commit-Nachrichten, Dokumentation. Eine konsistente Namenskonvention macht Ihre Branchliste zu einem lesbaren Changelog laufender Arbeiten.

- Conventional-Commits-Community

Ungültige Branchnamen verhindern

Einzelne Fehler zu beheben ist reaktiv. Der bessere Ansatz ist, zu verhindern, dass ungültige Namen überhaupt entstehen - durch Validierungswerkzeuge, Editor-Integrationen und CI-Prüfungen, die Probleme abfangen, bevor sie das Team stören.

Pre-Push-Git-Hooks

Ein `.git/hooks/pre-push`-Skript läuft vor jedem `git push` und kann den aktuellen Branchnamen gegen die Konvention Ihres Teams validieren. Scheitert der Name, terminiert der Hook mit einem Code ungleich null und bricht den Push mit einer erklärenden Nachricht ab. Nutzen Sie das `pre-commit`-Framework, um Hooks teamweit konsistent zu verteilen - einzelne `.git/hooks/`-Dateien werden nicht ins Repository committet, eine `.pre-commit-config.yaml` jedoch.

Namensvalidierung in der CI-Pipeline

Fügen Sie eine Validierungsstufe für Branchnamen am Anfang Ihrer CI-Pipeline hinzu. Für GitHub Actions nutzen Sie einen frühen Job-Schritt, der den Branchnamen gegen ein Regex-Muster prüft und den Workflow scheitern lässt, wenn er nicht passt. Das fängt Namen ab, die gemäß Git technisch gültig sind, aber die Team-Konvention verletzen - Branchnamen ohne Typ-Präfix, zu lange Namen oder Namen ohne Ticket-Referenz. Der Branchnamen-Konventionsvalidator wendet dieselbe Logik lokal in Ihrem Browser an, nützlich, um einen Namen zu prüfen, bevor Sie den Branch erstellen.

  • Lokal validieren vor dem Erstellen: nutzen Sie den Branchnamen-Konventionsvalidator, um Namen gegen Git-Regeln und Team-Konventionen zu prüfen.
  • Ein Branch-Erstellungsskript nutzen: eine kleine Shell-Funktion, die eine Ticket-ID und Beschreibung nimmt und einen korrekt formatierten Branchnamen erzeugt, eliminiert manuelle Namensfehler vollständig.
  • Pre-Push-Hook ergänzen: validiert den Branchnamen bei jedem Push - die letzte Verteidigungslinie, bevor ein ungültiger Name das Remote erreicht.
  • In CI linten: ein GitHub-Actions- oder GitLab-CI-Schritt, der den Branchnamen bei jedem PR validiert, verhindert, dass Konventionsverstöße gemerged werden.
  • Konvention in CONTRIBUTING.md dokumentieren: Teammitglieder, die die Regeln kennen, machen weniger Fehler als solche, die aus Beispielen raten.

Tip

Beim Aufbau von Branchnamen aus externen Daten (Tickertitel, Commit-Nachrichten oder API-Antworten) immer vor der Verwendung bereinigen. Ein verlässliches Muster: String kleinschreiben, jede Sequenz nicht-alphanumerischer Zeichen durch einen einzelnen Bindestrich ersetzen, führende und nachgestellte Bindestriche entfernen und auf 72 Zeichen kürzen. Das Ergebnis ist immer ein gültiger Git-Branchname und folgt den häufigsten Team-Konventionen.

Key takeaways

  • Git validiert Branchnamen gegen seine Refname-Spezifikation und lehnt sofort Namen mit Leerzeichen, `..`, `~`, `^`, `:`, `?`, `*`, `[`, `\\`, `@{` ab oder Namen, die mit einem Punkt beginnen/enden oder mit einem Bindestrich beginnen.
  • Die häufigste Ursache ist das Kopieren eines Tickertitels mit Leerzeichen direkt in einen `git checkout -b`-Befehl - ersetzen Sie Leerzeichen durch Bindestriche, bevor Sie einen Titel als Branchnamen verwenden.
  • Nutzen Sie `git check-ref-format --branch name` auf der Kommandozeile, um einen Namen zu testen, oder den Branchnamen-Konventionsvalidator im Browser.
  • Einen bestehenden Branch umbenennen: `git branch -m old-name new-name` lokal, dann den neuen Namen pushen und den alten Remote-Branch mit `git push origin --delete old-name` löschen.
  • Plattformregeln erweitern die Git-Basis: GitHub und GitLab lehnen `.lock` in jeder Pfadkomponente ab, und Windows NTFS macht Branchnamen groß-/kleinschreibungsunempfindlich - nutzen Sie immer Kleinbuchstaben, um plattformübergreifende Kollisionen zu vermeiden.
  • Verhindern Sie Fehler systematisch mit einem Pre-Push-Git-Hook, einer CI-Pipeline-Validierungsstufe und einer dokumentierten Branch-Namenskonvention in Ihrem Repository.
  • Die sicherste plattformübergreifende Konvention: `typ/klein-mit-bindestrichen` (z. B. `feat/add-login-form`, `fix/null-pointer-auth`).

Häufige Fragen

Git validates branch names against its refname specification and rejects any name containing forbidden characters or patterns. The most common triggers are spaces in the branch name, double dots (..), a tilde (~), a caret (^), a colon (:), a question mark (?), an asterisk (*), a backslash (\), or a name that starts or ends with a dot or slash. The error also fires if the name ends with .lock - a suffix Git reserves for lock files.

No. Spaces are explicitly forbidden in Git branch names. Git uses spaces as delimiters in many command outputs and cannot reliably disambiguate a branch name containing a space from two separate arguments. The standard replacement is a hyphen - `feature/user-profile` instead of `feature/user profile`. Underscores also work but hyphens are more widely adopted in open-source conventions. If your CI or CD platform has additional restrictions, check its documentation alongside Git's own refname rules.

Git allows letters (a-z, A-Z), digits (0-9), hyphens (-), underscores (_), forward slashes (/) for hierarchical namespaces (e.g. feature/login), and dots (.) within the name but not at the start or end. Most other characters are either forbidden or context-dependent. The safest convention is `lowercase-with-hyphens` or `type/lowercase-with-hyphens` (e.g. `feat/add-login-form`). Validate any unconventional branch name with the Branch Name Convention Validator before creating it.

Use `git branch -m old-name new-name` to rename a local branch. If the branch is already pushed to a remote, rename locally first, then push the new name with `git push origin new-name` and delete the old remote branch with `git push origin --delete old-name`. On GitHub, GitLab, and Bitbucket, you can also rename branches through the web UI - useful if the remote branch name itself contains characters that make CLI deletion awkward.

Older Git versions (before 2.x) had less strict local name validation and would sometimes allow creating a branch locally that was then rejected by the remote. Modern Git validates refnames at creation time, but edge cases can occur when names are constructed programmatically or passed through shell interpolation. Remote hosts like GitHub also apply additional restrictions (no consecutive dots, no names ending in .lock at any path component) that the local Git client does not enforce.

The combination @{ is forbidden in Git branch names because it is the syntax for the reflog shorthand - `branch@{n}` refers to the nth entry in a branch's reflog. Allowing @{ in a branch name would create an ambiguity between the branch itself and a reflog reference. This restriction is often encountered when developers try to use ticket IDs or timestamps that include the @ symbol followed by a brace in a branch name. Replace @ with a hyphen or remove it entirely.

Git itself is case-sensitive on Linux and macOS but case-insensitive on Windows filesystems, which means `Feature/Login` and `feature/login` are the same branch on Windows but different branches on Linux. Using lowercase throughout prevents confusing case-collision bugs when teams work across different operating systems. Most popular conventions (Gitflow, GitHub Flow, Trunk-Based Development) specify lowercase branch names, and most CI systems enforce it as a linting rule.

Git does not impose a hard character limit on branch names from the specification side, but practical limits exist. The underlying filesystem has path length constraints - on Windows, the default maximum path length is 260 characters, which includes the .git directory path and the refs/heads/ prefix. Long branch names also become impractical to type and read. Most teams enforce a soft limit of 50-72 characters as a convention. The Branch Name Convention Validator checks your name against both Git rules and configurable length limits.

ShareXLinkedIn