Branches erstellen & wechseln
Lerne, wie du Branches erstellst, zwischen ihnen wechselst und sie verwaltest - mit git branch, git switch und git checkout.
Jetzt wird es praktisch! Du weisst bereits, was Branches sind - nun lernst du, wie du sie erstellst, zwischen ihnen wechselst und sie verwaltest. Am Ende dieses Kapitels wirst du sicher mit Branches arbeiten koennen.
Branches erstellen
Methode 1: Branch erstellen und separat wechseln
# Branch erstellen
git branch feature/navigation
# Zum Branch wechseln
git switch feature/navigation
Methode 2: Branch erstellen und sofort wechseln
# Erstellen und wechseln in einem Schritt
git switch -c feature/navigation
Methode 3: Der klassische Weg mit checkout
# Erstellen und wechseln (aeltere Syntax)
git checkout -b feature/navigation
git switch wurde in Git 2.23 eingefuehrt und ist die moderne Alternative zu git checkout fuer Branch-Wechsel.
| Befehl | Modern | Klassisch |
|---|---|---|
| Branch wechseln | git switch branch-name | git checkout branch-name |
| Branch erstellen + wechseln | git switch -c branch-name | git checkout -b branch-name |
| Datei wiederherstellen | git restore datei | git checkout -- datei |
Zwischen Branches wechseln
Zum main-Branch zurueckkehren
git switch main
Zum vorherigen Branch zurueckwechseln
# Wechselt zum zuletzt genutzten Branch
git switch -
Das ist wie Alt+Tab fuer Branches!
Welcher Branch bin ich gerade?
# Methode 1: Branch anzeigen
git branch
feature/navigation
* main
# Methode 2: Im Status sehen
git status
On branch main
nothing to commit, working tree clean
Branches in der Praxis
Lass uns ein realistisches Szenario durchspielen. Du arbeitest an einer Webseite und moechtest eine Navigation hinzufuegen:
Schritt 1: Feature-Branch erstellen
# Sicherstellen, dass wir auf main sind
git switch main
# Feature-Branch erstellen
git switch -c feature/navigation
Switched to a new branch 'feature/navigation'
Schritt 2: Am Feature arbeiten
# Navigation in index.html hinzufuegen
# ... Aenderungen in deinem Editor ...
git add index.html
git commit -m "feat: Grundstruktur der Navigation erstellt"
# CSS fuer Navigation schreiben
# ... Aenderungen in deinem Editor ...
git add style.css
git commit -m "style: Navigation-Styling hinzugefuegt"
Schritt 3: Zurueck zu main
git switch main
Wenn du jetzt index.html oeffnest, ist die Navigation nicht da! Sie existiert nur im feature/navigation-Branch.
Schritt 4: Zurueck zum Feature
git switch feature/navigation
Die Navigation ist wieder da! Jeder Branch hat seinen eigenen Zustand.
Branches verwalten
Alle Branches anzeigen
# Lokale Branches
git branch
# Mit letztem Commit
git branch -v
# Lokale und Remote-Branches
git branch -a
# Bereits gemergte Branches
git branch --merged
# Noch nicht gemergte Branches
git branch --no-merged
Branch umbenennen
# Den aktuellen Branch umbenennen
git branch -m neuer-name
# Einen bestimmten Branch umbenennen
git branch -m alter-name neuer-name
Branch loeschen
# Gemergten Branch loeschen (sicher)
git branch -d feature/navigation
Deleted branch feature/navigation (was a3f4b2c).
# Ungemergten Branch loeschen (erzwingen)
git branch -D experiment/test
Achtung: -D (grosses D) loescht den Branch auch wenn er nicht gemergt wurde. Alle Commits, die nur in diesem Branch existieren, gehen verloren!
Mehrere Branches aufraeumen
# Alle gemergten Branches anzeigen
git branch --merged main
# Alle gemergten Branches loeschen (ausser main)
git branch --merged main | grep -v "main" | xargs git branch -d
Was passiert mit ungespeicherten Aenderungen?
Szenario: Wechseln mit uncommitted Changes
Du hast Aenderungen, die noch nicht committed sind, und moechtest den Branch wechseln:
git switch main
error: Your local changes to the following files would be overwritten by checkout:
index.html
Please commit your changes or stash them before you switch branches.
Git schuetzt dich! Du hast drei Optionen:
Option 1: Committen
git add .
git commit -m "wip: Zwischenstand Navigation"
git switch main
Option 2: Stashen (zwischenspeichern)
git stash
git switch main
# ... spaeter zurueckkehren ...
git switch feature/navigation
git stash pop
Option 3: Aenderungen verwerfen
git restore .
git switch main
Branch von einem bestimmten Commit erstellen
Du kannst einen Branch auch von einem aelteren Commit aus erstellen:
# Branch von einem bestimmten Commit
git switch -c fix/old-bug abc1234
# Branch von einem Tag
git switch -c release/v2.0 v1.0
Branch von einem Remote-Branch erstellen
Wenn ein Teamkollege einen Branch auf GitHub erstellt hat:
# Remote-Branches aktualisieren
git fetch
# Lokalen Branch erstellen, der den Remote-Branch trackt
git switch -c feature/login origin/feature/login
# Oder kuerzer (Git erkennt den Remote-Branch automatisch)
git switch feature/login
Branches vergleichen
Welche Commits hat ein Branch mehr als main?
git log main..feature/navigation --oneline
a3f4b2c feat: Navigation-Styling hinzugefuegt
8e1d9f0 feat: Grundstruktur der Navigation erstellt
Welche Dateien unterscheiden sich?
git diff main..feature/navigation --name-only
index.html
style.css
Ein vollstaendiger Workflow
Hier ist ein realistischer Workflow von Anfang bis Ende:
# 1. Starte auf main mit aktuellem Stand
git switch main
git pull
# 2. Erstelle einen Feature-Branch
git switch -c feature/kontakt-seite
# 3. Arbeite am Feature
touch kontakt.html
# ... Inhalt hinzufuegen ...
git add kontakt.html
git commit -m "feat: Kontakt-Seite mit Formular erstellt"
# ... weitere Aenderungen ...
git add style.css
git commit -m "style: Styling fuer Kontaktformular"
# 4. Pruefe die Commits
git log --oneline main..HEAD
# 5. Zurueck zu main und mergen
git switch main
git merge feature/kontakt-seite
# 6. Branch aufraeumen
git branch -d feature/kontakt-seite
# 7. Auf GitHub pushen
git push
Uebungen
- Erstelle drei Feature-Branches von
mainaus - Wechsle zwischen den Branches hin und her
- Mache in jedem Branch einen oder zwei Commits
- Zeige alle Branches mit
git branch -van - Loesche einen Branch mit
git branch -d - Nutze
git switch -, um schnell hin und her zu wechseln
Was kommt als Naechstes?
Im naechsten Kapitel lernst du, wie du Branches zusammenfuehrst (Mergen). Du wirst verstehen, wie Git verschiedene Entwicklungszweige wieder vereint und welche Merge-Strategien es gibt.
Zusammenfassung
git switch -c nameerstellt und wechselt zu einem neuen Branchgit switch namewechselt zu einem bestehenden Branchgit switch -wechselt zum vorherigen Branchgit branch -d nameloescht einen gemergten Branchgit branch -vzeigt alle Branches mit letztem Commit- Uncommitted Aenderungen muessen vor dem Wechsel committed oder gestasht werden
- Halte Branches kurzlebig und fokussiert auf eine Aufgabe
Pro-Tipp: Nutze beschreibende Branch-Namen mit Praefixen wie feature/, fix/ oder docs/. So weisst du auf einen Blick, worum es bei dem Branch geht. Der Branch-Name feature/user-authentication ist viel aussagekraeftiger als auth.