Zum Inhalt springen
Git & GitHub Anfänger 25 min

Branches verstehen

Verstehe das Konzept von Branches in Git und warum sie für die moderne Softwareentwicklung unverzichtbar sind.

Aktualisiert:

Branches sind das Feature, das Git wirklich maechtig macht. Sie erlauben dir, an verschiedenen Dingen gleichzeitig zu arbeiten, ohne dass sich etwas in die Quere kommt. In diesem Kapitel lernst du, was Branches sind, warum sie so nuetzlich sind und wie Git sie intern verwaltet.

Was ist ein Branch?

Stell dir dein Projekt wie einen Baum vor. Der Stamm ist dein Hauptcode (der main-Branch). Von diesem Stamm kannst du Aeste (Branches) abzweigen lassen, um an neuen Features zu arbeiten.

          Feature A
         /
main ───●───●───●───●
                 \
                  Feature B

Jeder Branch ist eine unabhaengige Kopie deines Codes. Du kannst dort experimentieren, ohne den Hauptcode zu beeinflussen.

Warum Branches?

Ohne BranchesMit Branches
Alle arbeiten am gleichen CodeJedes Feature hat seinen eigenen Bereich
Unfertiger Code blockiert alleUnfertiger Code ist isoliert
Fehler betreffen sofort alleFehler bleiben im Branch
Schwer rueckgaengig zu machenBranch einfach loeschen

Wie Branches in Git funktionieren

Technisch gesehen ist ein Branch in Git nur ein Zeiger auf einen Commit. Das macht Branches in Git extrem schnell und speichereffizient.

        C1 ← C2 ← C3 ← C4        (main)
                    \
                     C5 ← C6      (feature)
  • main zeigt auf Commit C4
  • feature zeigt auf Commit C6
  • HEAD zeigt an, auf welchem Branch du dich gerade befindest

HEAD - Wo bin ich gerade?

HEAD ist ein spezieller Zeiger, der immer auf den Branch zeigt, auf dem du gerade arbeitest:

# Zeigt, wo HEAD hinzeigt
git log --oneline -1
a3f4b2c (HEAD -> main) feat: Navigation hinzugefuegt

HEAD -> main bedeutet: Du bist gerade auf dem main-Branch.

Branches anzeigen

Alle lokalen Branches auflisten

git branch
  feature/navigation
* main
  fix/login-bug

Der Stern * markiert den aktuellen Branch.

Branches mit letztem Commit anzeigen

git branch -v
  feature/navigation a3f4b2c Navigation hinzugefuegt
* main               d4e5f6a Kontaktformular erstellt
  fix/login-bug      b2c3d4e Login-Bug behoben

Auch Remote-Branches anzeigen

git branch -a
  feature/navigation
* main
  fix/login-bug
  remotes/origin/main
  remotes/origin/feature/navigation

Branches mit Graph visualisieren

git log --oneline --graph --all
* d4e5f6a (HEAD -> main) feat: Kontaktformular erstellt
| * a3f4b2c (feature/navigation) feat: Navigation hinzugefuegt
|/
* 8e1d9f0 Grundstruktur erstellt
* 5c2a1b3 Initiales Projekt

Der main-Branch

Der main-Branch (frueher oft master genannt) ist der Hauptbranch deines Projekts. Er enthaelt den stabilen, funktionierenden Code.

Regeln fuer den main-Branch

  • Hier liegt immer funktionierender Code
  • Direkt auf main committen vermeiden
  • Aenderungen ueber Feature-Branches und Pull Requests einbringen
  • Ist die Basis fuer neue Branches
# Standard-Branch fuer neue Repos auf "main" setzen
git config --global init.defaultBranch main

Branch-Strategien

Feature Branches

Die gaengigste Strategie: Fuer jedes Feature (oder jeden Bugfix) erstellst du einen eigenen Branch.

main ───●───●───────────●───●
             \         /
              ●───●───●
              feature/login

Namenskonventionen fuer Branches:

PraefixVerwendungBeispiel
feature/Neues Featurefeature/dark-mode
fix/Bugfixfix/login-error
docs/Dokumentationdocs/api-guide
refactor/Code-Umstrukturierungrefactor/database
test/Tests hinzufuegentest/checkout-flow

Git Flow

Eine beliebte Strategie fuer groessere Projekte:

main     ───●───────────────●───────────●
             \             /             \
develop  ─────●───●───●───●───●───●───●───●
                   \     /         \     /
feature          ●───●           ●───●
  • main - Immer produktionsbereit
  • develop - Integrationsbranch fuer Features
  • feature/* - Einzelne Features

GitHub Flow

Eine einfachere Alternative, beliebt bei Web-Projekten:

main ───●───●───●───●───●───●
             \     /     \     /
              ●───●       ●───●
              feature1    feature2
  • Nur main als Hauptbranch
  • Feature-Branches fuer alle Aenderungen
  • Pull Requests fuer Code Reviews
  • Direkt nach dem Merge deployen

Wann erstelle ich einen neuen Branch?

Erstelle einen neuen Branch, wenn du:

  • An einem neuen Feature arbeitest
  • Einen Bug beheben moechtest
  • Etwas ausprobieren willst
  • Aenderungen reviewen lassen moechtest

Faustregel

Wenn du denkst “Das koennte laenger dauern oder schiefgehen”, erstelle einen Branch!

Ein praktisches Beispiel

Stell dir vor, du baust eine Webseite und moechtest eine Suchfunktion hinzufuegen:

# Du bist auf main
git branch
* main
# Erstelle einen Feature-Branch
git checkout -b feature/suchfunktion
Switched to a new branch 'feature/suchfunktion'
# Arbeite am Feature...
# Erstelle Commits...
git add search.html search.js
git commit -m "feat: Suchfeld in der Navigation hinzugefuegt"

git add search.css
git commit -m "style: Styling fuer Suchfeld und Suchergebnisse"

# Wenn das Feature fertig ist, zurueck zu main
git checkout main

# Branch zusammenfuehren (Merge)
git merge feature/suchfunktion

# Branch loeschen (optional)
git branch -d feature/suchfunktion

Uebungen

  1. Zeige alle Branches in deinem Projekt an
  2. Visualisiere die Branch-Struktur mit git log --oneline --graph --all
  3. Ueberlege dir eine Branch-Strategie fuer ein Webseiten-Projekt mit drei Features
  4. Benenne drei Features und wie du die Branches nennen wuerdest

Was kommt als Naechstes?

Im naechsten Kapitel lernst du, wie du Branches erstellst, zwischen ihnen wechselst und sie verwaltest. Du wirst die Befehle git branch, git checkout und git switch in der Praxis anwenden.

Zusammenfassung

  • Ein Branch ist ein unabhaengiger Entwicklungszweig
  • Technisch ist ein Branch nur ein Zeiger auf einen Commit
  • Der main-Branch enthaelt den stabilen Code
  • Feature-Branches isolieren neue Entwicklungen
  • HEAD zeigt an, auf welchem Branch du gerade bist
  • Branches sind in Git extrem schnell und leichtgewichtig
  • Gute Namenskonventionen (z.B. feature/, fix/) halten das Projekt uebersichtlich

Pro-Tipp: Halte deine Branches kurzlebig! Ein Feature-Branch sollte idealerweise nicht laenger als ein paar Tage existieren. Je laenger ein Branch lebt, desto groesser wird der Unterschied zu main und desto schwieriger wird der Merge.

Zurück zum Git & GitHub Kurs