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-descbugfix/<ticket>-short-deschotfix/<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>.