Zum Inhalt springen
Git & GitHub Anfänger 20 min

Branches erstellen & wechseln

Lerne, wie du Branches erstellst, zwischen ihnen wechselst und sie verwaltest - mit git branch, git switch und git checkout.

Aktualisiert:

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.

BefehlModernKlassisch
Branch wechselngit switch branch-namegit checkout branch-name
Branch erstellen + wechselngit switch -c branch-namegit checkout -b branch-name
Datei wiederherstellengit restore dateigit 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

  1. Erstelle drei Feature-Branches von main aus
  2. Wechsle zwischen den Branches hin und her
  3. Mache in jedem Branch einen oder zwei Commits
  4. Zeige alle Branches mit git branch -v an
  5. Loesche einen Branch mit git branch -d
  6. 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 name erstellt und wechselt zu einem neuen Branch
  • git switch name wechselt zu einem bestehenden Branch
  • git switch - wechselt zum vorherigen Branch
  • git branch -d name loescht einen gemergten Branch
  • git branch -v zeigt 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.

Zurück zum Git & GitHub Kurs