Übersicht
git branch [-a] [-r] [-v] [-d <name>] [-m <old> <new>] [<name> [<start-point>]]
Beschreibung
Der git branch-Befehl verwaltet Branches. Ohne Argumente listet er lokale Branches auf und markiert den aktuellen mit einem Sternchen. Mit einem Namen erstellt er einen neuen Branch, der auf das aktuelle HEAD zeigt (oder auf einen angegebenen Startpunkt). Er kann Branches auch löschen, umbenennen und inspizieren. Ein Branch ist in Git ein leichtgewichtiger, beweglicher Zeiger auf einen Commit — einen zu erstellen ist im Wesentlichen kostenlos, weshalb Git-Workflows viele kurzlebige Branches fördern.
Hinweis: git branch <name> erstellt einen Branch, wechselt aber nicht zu ihm. Um zu erstellen und in einem Schritt zu wechseln, verwenden Sie git switch -c <name> oder git checkout -b <name>. Das --track-Verhalten lässt einen neuen Branch einem Remote-Branch für Push/Pull-Defaults folgen.
Im täglichen Einsatz integriert sich git branch eng mit Shell-Aliasen, Editor-Plugins und Continuous Integration. Power-User fügen oft Aliase hinzu, die Flags kombinieren, die sie immer übergeben, oder wickeln den Befehl in Skripte, die Teamkonventionen durchsetzen. Die Ausgabeformatierung kann über Git-Config angepasst werden — Pretty-Formate, Farbschemata und Pager-Verhalten sind alle einstellbar. Wenn etwas schiefgeht, ist der erste Diagnoseschritt üblicherweise, den Befehl erneut mit GIT_TRACE=1 in der Umgebung auszuführen, was die zugrunde liegenden Plumbing-Aufrufe offenlegt. Für ungewöhnliche Situationen öffnet die --help-Ausgabe (git branch --help) die vollständige Manpage mit Details zu jeder Option, einschließlich solcher, die in alltäglichen Workflows selten verwendet werden, aber für Debugging oder Skripting im großen Maßstab essentiell sind.
Zu verstehen, wie git branch mit dem Rest von Gits Datenmodell interagiert — der Objektdatenbank, dem Index, Refs und dem Working Tree — zahlt sich aus. Jeder Befehl operiert auf einer Teilmenge dieser Stücke, und zu wissen, welche er berührt, hilft Ergebnisse vorherzusagen und sich von Fehlern zu erholen. Das Lesen der offiziellen Git-Dokumentation neben praktischer Übung in einem Wegwerf-Repository ist der schnellste Weg, die Nuancen zu verinnerlichen. Die meisten Produktionsprobleme mit Git rühren von einer von drei Ursachen: überraschendem Standardverhalten, partiellen Netzwerkoperationen oder dem Umschreiben bereits geteilter Historie. Ein funktionierendes mentales Modell der Nebenwirkungen von git branch hilft, alle drei zu vermeiden.
Häufige Optionen
| Option | Beschreibung |
|---|---|
-a, --all | Listet sowohl lokale als auch Remote-Tracking-Branches auf. |
-r, --remotes | Listet nur Remote-Tracking-Branches auf. |
-v, --verbose | Zeigt den jüngsten Commit jedes Branches. |
-d <name> | Löscht einen vollständig gemergten Branch. |
-D <name> | Erzwingt das Löschen eines Branches, auch wenn er nicht gemerged ist. |
-m <old> <new> | Benennt einen Branch um. |
--merged / --no-merged | Filtert Branches, die in HEAD (nicht) gemerged sind. |
--set-upstream-to=<remote>/<branch> | Konfiguriert Tracking für den aktuellen Branch. |
Beispiele
git branch
# Lokale Branches auflisten
git branch feature/login
# Einen neuen Branch vom aktuellen HEAD erstellen
git branch -d old-feature
# Einen gemergten Branch löschen
git branch -m main trunk
# Den lokalen Branch main in trunk umbenennen
git branch -a -v
# Alle Branches (lokal + remote) mit letzten Commits auflisten
Häufige Fehler
Das Verwenden von -D, um einen Branch zu erzwungenen löschen, kann ungemergte Commits für immer verlieren (jedenfalls bis zum Ablauf von git reflog). Versuchen Sie zuerst -d. Das Umbenennen des aktuellen Branches mit -m funktioniert ohne Argumente — git branch -m new-name benennt den Branch um, auf dem Sie sich befinden. Vergessen, Upstream-Tracking nach dem Erstellen eines Branches zu setzen, bedeutet, dass git push beim ersten Mal explizite Argumente brauchen kann.
Verwandte Befehle
git switch, git checkout, git merge, git push