Branches (deutsch: Zweige) gehören zu den mächtigsten Features von Git. Sie erlauben es, parallel an verschiedenen Versionen eines Projekts zu arbeiten.
Was ist ein Branch?¶
Ein Branch ist ein unabhängiger Entwicklungszweig. Stellen Sie sich einen Branch wie eine alternative Timeline vor, in der Sie experimentieren können, ohne die Hauptversion zu beeinflussen.
Metapher: Ein Baum (Tree) mit mehreren Ästen (Branches):
Der Hauptstamm ist der
main-BranchVon diesem Stamm können Äste abzweigen (Feature-Branches)
Diese Äste können später wieder zusammengeführt werden (Merge)
Warum Branches?¶
Szenario 1: Neue Funktion entwickeln¶
Sie arbeiten an einem Projekt und möchten eine neue Funktion ausprobieren, sind aber nicht sicher, ob sie funktioniert. Mit Branches können Sie:
Einen neuen Branch erstellen (z.B.
feature-statistik)In diesem Branch experimentieren
Falls es funktioniert: Zurück zu
mainund den Branch mergenFalls nicht: Branch einfach löschen,
mainbleibt unberührt
Szenario 2: Zusammenarbeit¶
Mehrere Personen arbeiten am selben Projekt:
Person A arbeitet am Branch
feature-exportPerson B arbeitet am Branch
bugfix-importDer
main-Branch bleibt stabilFertige Features werden einzeln in
mainintegriert
Szenario 3: Verschiedene Versionen¶
Sie entwickeln ein Tool und möchten:
Eine stabile Version (
main)Eine Entwicklungsversion mit neuen Features (
develop)Verschiedene Experimente (
experiment-xyz)
Branches anzeigen¶
Alle lokalen Branches anzeigen:
git branchAusgabe:
* main
feature-statistik
bugfix-datumDer * zeigt den aktuellen Branch an.
Auch Remote-Branches anzeigen:
git branch -aEinen neuen Branch erstellen¶
git branch feature-exportDieser Befehl erstellt einen neuen Branch namens feature-export, wechselt
aber noch nicht zu ihm.
Zu einem Branch wechseln¶
git checkout feature-exportJetzt arbeiten Sie im Branch feature-export. Alle Commits, die Sie jetzt
erstellen, werden nur in diesem Branch gespeichert.
Branch erstellen und direkt wechseln¶
Häufig möchte man beides auf einmal:
git checkout -b feature-exportDas -b steht für “branch” und bedeutet: “Erstelle einen neuen Branch und
wechsle direkt zu ihm.”
In einem Branch arbeiten¶
Angenommen, Sie sind im Branch feature-export:
# Branch anzeigen
git branch
# * feature-export
# main
# Datei erstellen und ändern
echo "def exportiere_daten():\n pass" > export.py
# Committen
git add export.py
git commit -m "Export-Funktion angelegt"Dieser Commit existiert jetzt nur im Branch feature-export, nicht in main!
Zwischen Branches wechseln¶
Wechseln Sie zurück zu main:
git checkout mainWas passiert?
Alle Dateien werden auf den Stand von
mainzurückgesetztexport.pyist verschwunden (existiert nur infeature-export)
Wechseln Sie wieder zu feature-export:
git checkout feature-exportWas passiert?
export.pyist wieder da!
Branches zusammenführen (Merge)¶
Wenn Sie mit Ihrer Arbeit im Feature-Branch zufrieden sind, möchten Sie ihn mit
main zusammenführen.
Schritt 1: Zu main wechseln¶
git checkout mainSchritt 2: Den Feature-Branch mergen¶
git merge feature-exportWas passiert?
Git fügt alle Commits aus feature-export in main ein.
Beispiel-Ausgabe (Fast-Forward Merge):
Updating a1b2c3d..e4f5g6h
Fast-forward
export.py | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 export.pyEin Fast-Forward Merge bedeutet: main hatte keine eigenen Änderungen, Git
schiebt main einfach vorwärts zu den neuen Commits.
Schritt 3: Branch löschen (optional)¶
Nach erfolgreichem Merge können Sie den Feature-Branch löschen:
git branch -d feature-exportDas -d steht für “delete”. Git fragt sicherheitshalber nach, wenn der Branch
noch nicht gemerged wurde.
Visualisierung: Branch-Workflow¶
Wann sind Branches sinnvoll?¶
Gute Anwendungsfälle¶
Neue Features entwickeln: Jedes neue Feature bekommt einen eigenen Branch
Bugfixes: Kritische Bugs in einem separaten Branch beheben
Experimente: Ausprobieren ohne Angst vor Schäden am Hauptcode
Zusammenarbeit: Jede*r arbeitet in eigenem Branch
Weniger sinnvoll¶
Für jeden Commit einen Branch: Zu viele Branches führen zu Unübersichtlichkeit
Niemals mergen: Branches sollten irgendwann wieder zusammengeführt werden
Bei sehr kleinen Solo-Projekten: Wenn Sie alleine an einem kleinen Skript arbeiten, reicht oft der
main-Branch
Branch-Strategien¶
Es gibt verschiedene Konventionen, wie man Branches benennt und organisiert:
Einfaches Modell (für Anfänger)¶
main → Stabiler Haupt-Branch
feature-xyz → Neue Features
bugfix-abc → Fehlerbehebungen
experiment-* → ExperimenteGit Flow (für größere Projekte)¶
main → Produktionsversion
develop → Entwicklungsversion
feature/xyz → Feature-Branches
hotfix/abc → Dringende Bugfixes
release/v1.0 → Release-VorbereitungFür Ihren Einstieg reicht das einfache Modell!
Merge-Konflikte (Überblick)¶
Ein Merge-Konflikt entsteht, wenn:
Zwei Branches dieselbe Zeile in derselben Datei ändern
Git nicht automatisch entscheiden kann, welche Änderung behalten werden soll
Praktisches Beispiel¶
Ein vollständiges Beispiel: Feature entwickeln, mergen, Branch löschen.
# 1. Neuen Branch erstellen und wechseln
git checkout -b feature-statistik
# 2. Im Feature-Branch arbeiten
echo "def statistik():\n pass" > statistik.py
git add statistik.py
git commit -m "Statistik-Funktion angelegt"
# 3. Weiterarbeiten
echo " print('Statistik')" >> statistik.py
git add statistik.py
git commit -m "Statistik-Ausgabe implementiert"
# 4. Zurück zu main
git checkout main
# 5. Feature-Branch mergen
git merge feature-statistik
# 6. Branch löschen (da fertig)
git branch -d feature-statistik
# 7. Prüfen, dass nur noch main existiert
git branchZusammenfassung¶
Die wichtigsten Branch-Befehle:
| Befehl | Beschreibung |
|---|---|
git branch | Branches anzeigen |
git branch <name> | Neuen Branch erstellen |
git checkout <name> | Zu Branch wechseln |
git checkout -b <name> | Branch erstellen und wechseln |
git merge <name> | Branch in aktuellen Branch mergen |
git branch -d <name> | Branch löschen |
Typischer Feature-Workflow¶
git checkout -b feature-xyz # Branch erstellen
# ... arbeiten und committen ...
git checkout main # Zurück zu main
git merge feature-xyz # Feature mergen
git branch -d feature-xyz # Branch löschenIm nächsten Kapitel lernen Sie, wie Sie Git konkret in diesem Kurs einsetzen können.