Von Gast (nicht überprüft) , 29 April 2026

Einführung

Branches sind Gits Art, parallele Entwicklungslinien zu unterstützen. Einen Branch zu erstellen ist im Wesentlichen kostenlos: Es ist nur eine 41-Byte-Datei, die einen Commit-Hash enthält. Verwenden Sie sie großzügig für Features, Experimente und Bugfixes.

Moderne Befehle

Seit Git 2.23 gibt es zwei zweckgebaute Befehle: git switch für Branches und git restore für Dateien. Verwenden Sie sie; sie sind klarer als das überladene Verhalten von git checkout.

git switch main                    # auf existierenden Branch wechseln
git switch -c feature/login        # erstellen und wechseln
git switch -c hotfix v1.2.3        # von einem Tag erstellen
git switch -                       # vorheriger Branch (wie cd -)

Branches auflisten

git branch                    # lokal
git branch -r                 # Remote-Tracking
git branch -a                 # alle
git branch -vv                # mit Upstream und voraus/zurück
git branch --merged           # in den aktuellen gemerged
git branch --no-merged        # noch nicht gemerged

Umbenennen und löschen

git branch -m old new             # umbenennen
git branch -m new                  # aktuellen Branch umbenennen
git branch -d feature/login        # gemergten Branch löschen
git branch -D feature/abandoned    # ungemergten erzwingen-löschen

-d verweigert, wenn der Branch ungemergte Commits hat, und schützt so Arbeit.

Remote-Branches tracken

git switch feature/login           # erstellt automatisch lokal aus origin/feature/login
git switch -c mine origin/feature/login   # explizit
git branch -u origin/main          # Upstream des aktuellen Branches setzen

Die klassische Syntax

Ältere Tutorials verwenden git checkout. Es funktioniert weiterhin:

git checkout main
git checkout -b feature/login
git checkout v1.2.3

Der Nachteil ist, dass derselbe Befehl auch Dateien wiederherstellt, was Verwirrung stiftet. Bevorzugen Sie switch und restore in neuen Skripten.

Branch-Namenskonventionen

Konsistente Namen erleichtern das Tooling. Häufige Muster:

  • feature/<ticket>-short-desc
  • bugfix/<ticket>-short-desc
  • hotfix/<version>
  • release/<version>
git switch -c feature/PROJ-123-add-search
git config --global branch.autoSetupMerge always
git config --global branch.autoSetupRebase always

Die autoSetup-Optionen sorgen dafür, dass neue Branches automatisch ihren Startpunkt tracken, was die voraus/zurück-Zeile von git status vom ersten Tag an aussagekräftig macht.

Auf dem Remote umbenennen

Das Umbenennen eines Remote-Branches sind zwei Operationen: lokal umbenennen und die neue Ref auf dem Server erstellen, dann die alte löschen:

git branch -m old new
git push -u origin new
git push origin --delete old

Häufige Fehler

Branches mit uncommitted Änderungen wechseln, die mit dem Ziel kollidieren; Git verweigert dies, und der Fix ist committen, stashen oder git switch --discard-changes zu verwenden, falls Sie sie wirklich nicht wollen. Dutzende langlebiger Branches erstellen und nie gemergte löschen; git branch --merged | xargs git branch -d räumt auf. Branches mit Zeichen benennen, die Shells verwirren (Leerzeichen, Glob-Zeichen); bleiben Sie bei Buchstaben, Ziffern, Schrägstrich und Bindestrich. Schließlich: Einen Branch mit -D löschen und in Panik geraten, wenn Sie merken, dass er ungemergte Arbeit hatte; das Reflog hat sie noch 90 Tage: git reflog, finden Sie den SHA, git switch -c rescued <sha>.