Der Feature-Branch-Workflow – sauber entwickeln in PhpStorm 🌿
Direkt auf dem main-Branch zu arbeiten ist keine gute Idee – selbst wenn du alleine arbeitest. Der sogenannte Feature-Branch-Workflow ist eine einfache, aber wirkungsvolle Methode, um dein Projekt sauber und sicher zu halten. Hier erfährst du, warum das so ist und wie du diesen Workflow in PhpStorm praktisch umsetzt.
Warum nicht direkt auf main arbeiten?
Der main-Branch (früher oft master genannt) sollte immer den stabilen, funktionierenden Zustand deines Projekts repräsentieren. Wenn du direkt darauf arbeitest, riskierst du mehrere Probleme:
- Halbfertiger Code im Hauptbranch: Du fängst ein Feature an, bist mittendrin – und plötzlich musst du einen dringenden Bug fixen. Jetzt ist dein
mainin einem unbrauchbaren Zwischenzustand. - Schwierige Fehlersuche: Wenn alles in einem langen Strang von Commits liegt, ist es schwerer nachzuvollziehen, welche Änderungen zu welchem Feature gehören.
- Kein einfaches Verwerfen: Stellst du fest, dass ein Experiment nicht funktioniert, musst du mühsam einzelne Commits rückgängig machen, statt einfach einen Branch zu löschen.
Der Feature-Branch-Workflow löst all diese Probleme elegant.
Das Prinzip des Feature-Branch-Workflows
Die Idee ist simpel:
Für jedes neue Feature, jeden Bugfix oder jedes Experiment erstellst du einen eigenen Branch. Erst wenn die Arbeit fertig und getestet ist, führst du den Branch in
mainzusammen.
flowchart TD
MAIN["main-Branch\nImmer stabil und funktionsfaehig"]
FEATURE1["feature/login-formular\nNeues Feature entwickeln"]
FEATURE2["bugfix/navbar-fehler\nBug beheben"]
MAIN -->|"Branch erstellen"| FEATURE1
MAIN -->|"Branch erstellen"| FEATURE2
FEATURE1 -->|"Merge nach Fertigstellung"| MAIN
FEATURE2 -->|"Merge nach Fertigstellung"| MAIN
style MAIN fill:#c8e6c9,color:#000000
style FEATURE1 fill:#bbdefb,color:#000000
style FEATURE2 fill:#ffe0b2,color:#000000
Dadurch bleibt main immer in einem Zustand, den du jederzeit deployen oder jemandem zeigen könntest.
Der Workflow Schritt für Schritt
1. Vor dem Start: Aktuellen Stand holen
Bevor du einen neuen Branch erstellst, solltest du sicherstellen, dass dein lokaler main-Branch auf dem neuesten Stand ist. In PhpStorm:
- Wechsle zum
main-Branch (falls nicht schon dort) – klicke dafür auf den Branch-Namen unten rechts und wählemain. - Führe einen Pull durch: Git → Pull oder
Ctrl+T(Windows) /Cmd+T(Mac).
2. Neuen Feature-Branch erstellen
Jetzt erstellst du einen Branch für dein Vorhaben:
- Klicke auf den Branch-Namen unten rechts in PhpStorm.
- Wähle New Branch aus dem Popup-Menü.
- Gib einen aussagekräftigen Namen ein, zum Beispiel:
feature/kontaktformular– für ein neues Featurebugfix/login-fehler– für eine Fehlerbehebungexperiment/neues-design– für etwas, das du ausprobieren möchtest
- Stelle sicher, dass Checkout branch aktiviert ist (damit du direkt auf den neuen Branch wechselst).
- Klicke auf Create.
💡 Tipp zur Benennung: Verwende Prefixe wie
feature/,bugfix/oderexperiment/, gefolgt von einer kurzen Beschreibung. Das macht deine Branch-Liste übersichtlich.
3. Arbeiten und regelmäßig committen
Jetzt arbeitest du ganz normal auf deinem neuen Branch:
- Schreibe Code, teste, verbessere.
- Committe regelmäßig kleine, in sich abgeschlossene Schritte – nicht erst am Ende alles auf einmal.
- Schreibe aussagekräftige Commit-Nachrichten, wie du es gelernt hast.
Das Schöne daran: Alles, was du hier commitest, landet nur in diesem Branch. Dein main bleibt davon unberührt.
4. Feature fertig? Zurück zu main wechseln
Wenn du mit deiner Arbeit fertig bist und alles getestet hast:
- Wechsle zurück zum
main-Branch – klicke auf den Branch-Namen unten rechts und wählemain→ Checkout. - Optional, aber empfohlen: Hole dir den neuesten Stand mit Pull, falls sich zwischenzeitlich etwas geändert hat.
5. Feature-Branch in main mergen
Jetzt führst du deinen Feature-Branch in main zusammen:
- Klicke wieder auf den Branch-Namen unten rechts.
- Finde deinen Feature-Branch in der Liste (z. B.
feature/kontaktformular). - Klicke darauf und wähle Merge into Current (oder „In aktuellen Branch mergen").
- PhpStorm führt den Merge durch. Wenn es keine Konflikte gibt, ist alles sofort erledigt.
- Bei einem Merge-Konflikt öffnet PhpStorm automatisch das Konflikt-Tool – löse die Konflikte wie gewohnt.
6. Änderungen pushen
Nach dem Merge solltest du deinen aktualisierten main-Branch auf GitHub pushen:
- Git → Push oder
Ctrl+Shift+K(Windows) /Cmd+Shift+K(Mac).
7. Feature-Branch aufräumen (optional, aber empfohlen)
Der Feature-Branch hat seinen Zweck erfüllt. Du kannst ihn jetzt löschen, um deine Branch-Liste sauber zu halten:
- Klicke auf den Branch-Namen unten rechts.
- Finde den gemergten Feature-Branch.
- Klicke darauf und wähle Delete – PhpStorm fragt dich, ob du ihn auch remote löschen möchtest (falls du ihn gepusht hattest).
Der komplette Ablauf visualisiert
flowchart TD
A["1. Auf main wechseln\nund Pull durchfuehren"] --> B["2. Neuen Branch erstellen\nz.B. feature/warenkorb"]
B --> C["3. Entwickeln und\nregelmaessig committen"]
C --> D{"4. Feature fertig\nund getestet?"}
D -->|"Nein"| C
D -->|"Ja"| E["5. Zu main wechseln\nund Pull durchfuehren"]
E --> F["6. Feature-Branch\nin main mergen"]
F --> G["7. main auf\nGitHub pushen"]
G --> H["8. Feature-Branch\nloeschen"]
H --> I["Fertig!"]
style A fill:#e3f2fd,color:#000000
style B fill:#e3f2fd,color:#000000
style C fill:#fff3e0,color:#000000
style D fill:#fce4ec,color:#000000
style E fill:#e3f2fd,color:#000000
style F fill:#c8e6c9,color:#000000
style G fill:#c8e6c9,color:#000000
style H fill:#f3e5f5,color:#000000
style I fill:#c8e6c9,color:#000000
Praktisches Beispiel: Ein Kontaktformular entwickeln
Angenommen, du möchtest ein Kontaktformular zu deinem PHP-Projekt hinzufügen:
- Pull auf
main– sicherstellen, dass du aktuell bist. - Branch erstellen:
feature/kontaktformular - Arbeiten:
- Commit 1: „HTML-Struktur für Kontaktformular erstellt"
- Commit 2: „CSS-Styling hinzugefügt"
- Commit 3: „PHP-Verarbeitung implementiert"
- Commit 4: „E-Mail-Validierung ergänzt"
- Testen – alles funktioniert wie gewünscht.
- Zu
mainwechseln und Pull durchführen. - Merge von
feature/kontaktformularinmain. - Push des aktualisierten
mainauf GitHub. - Branch löschen:
feature/kontaktformularwird nicht mehr benötigt.
Falls du mitten in der Arbeit einen dringenden Bug im Live-System fixen müsstest, wäre das kein Problem: Du könntest einfach zu main wechseln, einen neuen bugfix/-Branch erstellen, den Fehler beheben, mergen und dann zu deinem Kontaktformular-Branch zurückkehren.
Zusammenfassung: Die goldenen Regeln
| Regel | Warum? |
|---|---|
main ist immer stabil |
Du kannst jederzeit deployen oder demonstrieren |
| Ein Branch pro Aufgabe | Klare Trennung, einfaches Verwerfen |
| Aussagekräftige Branch-Namen | Du findest dich auch in einer Woche noch zurecht |
| Regelmäßig committen | Kleine Schritte sind leichter nachzuvollziehen |
| Nach dem Merge aufräumen | Keine Verwirrung durch alte Branches |
Dieser Workflow mag anfangs wie ein Umweg erscheinen, aber nach kurzer Zeit wird er zur Gewohnheit – und du wirst dich fragen, wie du jemals ohne Branches gearbeitet hast. 🚀