Branches verstehen
Verstehe das Konzept von Branches in Git und warum sie für die moderne Softwareentwicklung unverzichtbar sind.
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 Branches | Mit Branches |
|---|---|
| Alle arbeiten am gleichen Code | Jedes Feature hat seinen eigenen Bereich |
| Unfertiger Code blockiert alle | Unfertiger Code ist isoliert |
| Fehler betreffen sofort alle | Fehler bleiben im Branch |
| Schwer rueckgaengig zu machen | Branch 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)
mainzeigt auf CommitC4featurezeigt auf CommitC6HEADzeigt 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
maincommitten 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:
| Praefix | Verwendung | Beispiel |
|---|---|---|
feature/ | Neues Feature | feature/dark-mode |
fix/ | Bugfix | fix/login-error |
docs/ | Dokumentation | docs/api-guide |
refactor/ | Code-Umstrukturierung | refactor/database |
test/ | Tests hinzufuegen | test/checkout-flow |
Git Flow
Eine beliebte Strategie fuer groessere Projekte:
main ───●───────────────●───────────●
\ / \
develop ─────●───●───●───●───●───●───●───●
\ / \ /
feature ●───● ●───●
main- Immer produktionsbereitdevelop- Integrationsbranch fuer Featuresfeature/*- Einzelne Features
GitHub Flow
Eine einfachere Alternative, beliebt bei Web-Projekten:
main ───●───●───●───●───●───●
\ / \ /
●───● ●───●
feature1 feature2
- Nur
mainals 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
- Zeige alle Branches in deinem Projekt an
- Visualisiere die Branch-Struktur mit
git log --oneline --graph --all - Ueberlege dir eine Branch-Strategie fuer ein Webseiten-Projekt mit drei Features
- 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.