Feature Branch — ist eine Branching-Technik in Git, bei der jede neue Funktion in einem separaten Branch entwickelt wird, isoliert vom Hauptcode. Dies ermöglicht mehreren Entwicklern, gleichzeitig an verschiedenen Aufgaben zu arbeiten, ohne die stabile Version des Projekts zu gefährden. Laut Atlassian, 2024 ist Feature Branch ein Schlüsselelement von Git Flow und wird in den meisten kommerziellen Projekten verwendet.
Wichtige Punkte
feature/funktionsname im Standard Git Flow.Feature Branch (Funktions-Branch) ist ein temporärer Branch in Git, der von develop erstellt wird, um eine bestimmte Funktionalität zu entwickeln. Im Gegensatz zu den langlebigen Branches main und develop existieren feature-Branches nur für eine begrenzte Zeit — von einigen Stunden bis zu einigen Wochen.
Das Hauptziel eines feature-Branches ist es, Änderungen, die mit einer Aufgabe zusammenhängen, vom restlichen Code zu isolieren. Der Entwickler kann in seinem eigenen Branch experimentieren, viele Commits machen und sogar Code zerstören, ohne die Arbeit anderer Teammitglieder zu beeinträchtigen.
Nach Abschluss der Entwicklung wird der feature-Branch über einen Pull Request mit obligatorischem Code-Review zurück in develop zusammengeführt. Nach der Zusammenführung wird der Branch in der Regel gelöscht, um das Repository sauber zu halten.
Laut Vincent Driessen, 2010 wurde das Git-Flow-Modell mit feature-Branches dank der klaren Aufgabentrennung zwischen verschiedenen Branch-Typen zum Industriestandard.
Der Workflow mit feature-Branches besteht aus einer Abfolge von Schritten, die der Entwickler für jede neue Funktion ausführt. Dieser Prozess minimiert Merge-Konflikte und gewährleistet die Code-Qualitätskontrolle.
Die regelmäßige Synchronisation mit develop ist entscheidend. Je länger ein feature-Branch ohne Zusammenführung von Änderungen aus develop lebt, desto höher ist die Wahrscheinlichkeit von Konflikten bei der endgültigen Zusammenführung.
| Synchronisationshäufigkeit | Konfliktrisiko | Entwicklungskomfort |
|---|---|---|
| Täglich | Niedrig | Erfordert häufigen Rebase oder Merge |
| Wöchentlich | Mittel | Komfortables Tempo, moderate Konflikte |
| Monatlich | Hoch | Risiko komplexer Merge-Konfliktlösung |
| Nie | Kritisch | Zusammenführung könnte ohne Datenverlust unmöglich sein |
Branch-Namensgebung ist ein wichtiger Teil der Team-Disziplin. Ein einheitlicher Namensstandard ermöglicht es, schnell zu erkennen, an welcher Aufgabe gearbeitet wird und wer sie ausführt.
feature/added-auth-module.feature/PROJ-42-add-login.feature/feat/analytics-dashboard.Die Verwendung der Aufgaben-ID aus JIRA, Trello oder einem anderen System ist eine bewährte Praxis. Sie verknüpft den Code automatisch mit der Aufgabe und vereinfacht die Branch-Suche über git log.
Pull Request (oder Merge Request in GitLab) ist eine Anfrage zur Zusammenführung des feature-Branches in develop. Ein PR ist nicht nur eine technische Operation, sondern ein teamweiter Code-Review-Prozess, der die Code-Qualität verbessert und Wissen innerhalb des Teams verbreitet.
Ein guter PR enthält einen Titel mit einer kurzen Aufgabenbeschreibung, einen Link zum Ticket und eine Beschreibung der Änderungen. Der Entwickler sollte angeben, was genau gemacht wurde, welche Dateien geändert wurden und ob es potenzielle Risiken für andere Teile des Projekts gibt.
Das Team überprüft den Code im PR, hinterlässt Kommentare, fordert Änderungen an (change requests) und genehmigt die Zusammenführung (approve). Nach der Genehmigung wird ein Merge oder Squash Merge durchgeführt.
Die durchschnittliche PR-Review-Zeit in der mobilen Entwicklung beträgt 4 bis 24 Stunden. Die Bibliothek Danger automatisiert einen Teil der Überprüfungen, indem sie Linter und Tests direkt im PR ausführt.
Nach der PR-Genehmigung kann der feature-Branch auf verschiedene Weise in develop zusammengeführt werden. Die Wahl der Merge-Strategie beeinflusst die Commit-Historie und die Möglichkeit, Änderungen rückgängig zu machen.
Für mobile Projekte mit häufigen Veröffentlichungen wird am häufigsten Squash Merge verwendet: Er liefert eine saubere Historie in develop, während die Entwicklungsdetails in der PR-Beschreibung und der Tracker-Aufgabe bleiben.
Auch erfahrene Entwickler machen Fehler bei der Arbeit mit feature-Branches. Die Kenntnis typischer Probleme hilft, Zeit- und Datenverlust zu vermeiden.
Der beste Weg, diese Probleme zu vermeiden, ist, sich zu Projektbeginn auf Arbeitsregeln zu einigen und automatisierte Überprüfungen in der CI/CD-Pipeline zu verwenden.
Betrachten wir ein praktisches Szenario: Ein Entwickler beginnt eine neue Authentifizierungsfunktion in einer mobilen App. Er erstellt einen feature-Branch, arbeitet am Code und schließt die Aufgabe mit einem Pull Request ab.
# Develop aktualisieren und feature-Branch erstellen
git checkout develop
git pull origin develop
git checkout -b feature/add-login-screen
# Arbeit an der Funktion: Commits
git add src/ui/login/
git commit -m "Add login screen layout"
# Feature-Branch auf den Server pushen
git push origin feature/add-login-screen
# Synchronisation mit develop (Rebase)
git fetch origin develop
git rebase origin/develop
# Nach PR-Genehmigung: lokalen develop aktualisieren und Branch löschen
git checkout develop
git pull origin develop
git branch -d feature/add-login-screen
Der Befehl git branch -d löscht den Branch nur, nachdem seine Änderungen vollständig zusammengeführt wurden. Wenn der Branch nicht zusammengeführt ist, schlägt Git die Verwendung von git branch -D zur erzwungenen Löschung vor — verwenden Sie dieses Flag mit Vorsicht.
Die CI/CD-Pipeline sollte für jeden feature-Branch vor der Erstellung eines PR ausgeführt werden. Dies ermöglicht die Erkennung von Problemen in einem frühen Stadium, bevor der Code zur Überprüfung durch andere Entwickler gelangt.
# GitHub Actions zur Überprüfung des feature-Branches
name: Feature Branch CI
on:
push:
branches:
- 'feature/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: ./gradlew test
- name: Lint check
run: ./gradlew lint
Die Pipeline überprüft, ob der Code kompiliert, Tests bestanden werden und der Code-Stil den Teamstandards entspricht. Erst nach Bestehen aller Überprüfungen kann ein Pull Request erstellt werden.
Häufig gestellte Fragen
Ja, das ist eine Standardpraxis. Jeder Entwickler kann in seinem eigenen feature-Branch arbeiten, und alle synchronisieren unabhängig mit develop. Die Hauptregel ist ein Branch pro Aufgabe, um Cross-Task-Abhängigkeiten im Code zu vermeiden.
Führen Sie git rebase origin/develop auf Ihrem feature-Branch aus. Wenn Konflikte auftreten, lösen Sie sie einzeln — die Commits werden über den letzten develop-Stand neu geschrieben. Nach dem Rebase ist git push --force erforderlich, um den entfernten Branch zu aktualisieren.
Wenn die Aufgabe abgebrochen wurde, kann der feature-Branch einfach gelöscht werden. Verwenden Sie git branch -d feature/name für den lokalen Branch und git push origin --delete feature/name für den entfernten. Alle nicht committeten Änderungen gehen verloren.
Im Wesentlichen ist es dasselbe. Verschiedene Teams verwenden unterschiedliche Präfixe: feature/, task/, feat/. Es gibt keinen Unterschied in der Git-Mechanik — alle sind temporäre Branches, die von develop zur isolierten Entwicklung erstellt wurden.
Ja, das ist eine obligatorische Praxis. Branches nach der Zusammenführung verschmutzen die Referenzliste und können Verwirrung stiften. Die meisten Plattformen (GitHub, GitLab) bieten an, den Branch sofort nach dem Merge des PR zu löschen, und lokale Branches werden mit dem Befehl git branch -d gelöscht.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch