Feature Branch „ is een vertakkingstechniek in Git waarbij elke nieuwe functie in een aparte branch wordt ontwikkeld, geïsoleerd van de hoofdcode. Dit stelt meerdere ontwikkelaars in staat om gelijktijdig aan verschillende taken te werken zonder risico op beschadiging van de stabiele versie van het project. Volgens Atlassian, 2024 is Feature Branch een sleutelelement van Git Flow en wordt het gebruikt in de meeste commerciële projecten.
Belangrijkste punten
feature/naam-functie in standaard Git Flow.Feature Branch (functie branch) „ is een tijdelijke branch in Git, gemaakt vanaf develop voor het ontwikkelen van een aparte functionaliteit. In tegenstelling tot de langlevende branches main en develop, bestaan feature branches voor een beperkte tijd „ van enkele uren tot enkele weken.
Het belangrijkste doel van feature branch is het isoleren van wijzigingen die bij één taak horen van de rest van de code. De ontwikkelaar kan experimenteren, vele commits maken en zelfs code breken in zijn branch, zonder het werk van andere teamleden te beïnvloeden.
Na voltooiing van de ontwikkeling wordt de feature branch terug samengevoegd in develop via een Pull Request met verplichte codebeoordeling. Na het samenvoegen wordt de branch meestal verwijderd om de repository schoon te houden.
Volgens Vincent Driessen, 2010 is het Git Flow-model met feature branches de industrienorm geworden dankzij de duidelijke verdeling van verantwoordelijkheden tussen verschillende branchtypen.
Workflow met feature branch bestaat uit een reeks stappen die de ontwikkelaar voor elke nieuwe functie uitvoert. Dit proces minimaliseert samenvoegconflicten en zorgt voor kwaliteitscontrole van de code.
Periodieke synchronisatie met develop is van cruciaal belang. Hoe langer een feature branch leeft zonder wijzigingen uit develop samen te voegen, hoe groter de kans op conflicten bij de uiteindelijke samenvoeging.
| Synchronisatiefrequentie | Risico op conflicten | Ontwikkelgemak |
|---|---|---|
| Dagelijks | Laag | Vereist frequente rebase of merge |
| Wekelijks | Gemiddeld | Comfortabele modus, matige conflicten |
| Maandelijks | Hoog | Risico op complexe merge conflict resolution |
| Nooit | Kritiek | Samenvoegen kan onmogelijk zijn zonder gegevensverlies |
Branches benoemen „ een belangrijk onderdeel van teamdiscipline. Een uniforme naamgevingsstandaard maakt het mogelijk snel te bepalen aan welke taak wordt gewerkt en wie deze uitvoert.
feature/added-auth-module.feature/PROJ-42-add-login.feature/feat/analytics-dashboard.Het gebruik van een taak-ID uit JIRA, Trello of een ander systeem is de beste praktijk. Het koppelt automatisch de code aan de taak en vereenvoudigt het zoeken naar branches via git log.
Pull Request (of Merge Request in GitLab) „ is een verzoek om de feature branch in develop samen te voegen. PR is niet zomaar een technische handeling, maar een teamproces van codebeoordeling dat de codekwaliteit verbetert en kennis binnen het team verspreidt.
Een goede PR bevat een titel met een korte taakomschrijving, een link naar de ticket en een beschrijving van de wijzigingen. De ontwikkelaar moet aangeven wat er precies is gedaan, welke bestanden zijn gewijzigd en of er potentiële risico's zijn voor andere delen van het project.
Het team beoordeelt de code in de PR, laat opmerkingen achter, vraagt wijzigingen aan (change requests) en keurt de samenvoeging goed (approve). Na goedkeuring wordt merge of squash merge uitgevoerd.
De gemiddelde beoordelingstijd van een PR in mobiele ontwikkeling is 4 tot 24 uur. De bibliotheek Danger automatiseert een deel van de controles door linters en tests direct in de PR uit te voeren.
Na goedkeuring van de PR kan de feature branch op verschillende manieren in develop worden samengevoegd. De keuze van samenvoegstrategie beïnvloedt de commitgeschiedenis en de mogelijkheid om wijzigingen terug te draaien.
Voor mobiele projecten met frequente releases wordt meestal squash merge gebruikt: het geeft een schone geschiedenis in develop, terwijl ontwikkelingsdetails in de PR-beschrijving en de trackertaak blijven.
Zelfs ervaren ontwikkelaars maken fouten bij het werken met feature branches. Kennis van veelvoorkomende problemen helpt tijd- en gegevensverlies te voorkomen.
De beste manier om deze problemen te voorkomen, is door aan het begin van het project afspraken te maken over werkregels en gebruik te maken van geautomatiseerde controles in de CI/CD-pipeline.
Laten we een praktisch scenario bekijken: een ontwikkelaar begint een nieuwe authenticatiefunctie in een mobiele app. Hij maakt een feature branch, werkt aan de code en voltooit de taak met een Pull Request.
# Develop bijwerken en feature branch aanmaken
git checkout develop
git pull origin develop
git checkout -b feature/add-login-screen
# Werken aan de functie: commits
git add src/ui/login/
git commit -m "Add login screen layout"
# Feature branch naar server sturen
git push origin feature/add-login-screen
# Synchronisatie met develop (rebase)
git fetch origin develop
git rebase origin/develop
# Na goedkeuring PR: lokale develop bijwerken en branch verwijderen
git checkout develop
git pull origin develop
git branch -d feature/add-login-screen
Het commando git branch -d verwijdert de branch pas nadat de wijzigingen volledig zijn samengevoegd. Als de branch niet is samengevoegd, stelt Git voor om git branch -D te gebruiken voor geforceerd verwijderen „ gebruik deze vlag voorzichtig.
De CI/CD-pipeline moet voor elke feature branch worden gestart voordat een PR wordt aangemaakt. Dit maakt het mogelijk problemen in een vroeg stadium te ontdekken, voordat de code ter beoordeling naar andere ontwikkelaars gaat.
# GitHub Actions voor controle van feature branch
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
De pipeline controleert of de code compileert, de tests slagen en de codestijl voldoet aan de binnen het team geldende standaarden. Pas na het doorlopen van alle controles kan een Pull Request worden aangemaakt.
Veelgestelde vragen
Ja, dit is standaardpraktijk. Elke ontwikkelaar kan in zijn eigen feature branch werken en ze worden allemaal onafhankelijk gesynchroniseerd met develop. De hoofdregel „ één branch per taak, om cross-task afhankelijkheden in de code te voorkomen.
Voer git rebase origin/develop uit op uw feature branch. Als er conflicten ontstaan „ los ze één voor één op, de commits worden herschreven bovenop de laatste staat van develop. Na rebase is git push --force nodig om de remote branch bij te werken.
Als de taak is geannuleerd, kan de feature branch eenvoudig worden verwijderd. Gebruik git branch -d feature/name voor de lokale branch en git push origin --delete feature/name voor de remote branch. Alle niet-gecommite wijzigingen gaan verloren.
In feite is het hetzelfde. Verschillende teams gebruiken verschillende voorvoegsels: feature/, task/, feat/. Er is geen verschil in Git-mechanica „ ze zijn allemaal tijdelijke branches gemaakt vanaf develop voor geïsoleerde ontwikkeling.
Ja, dit is een verplichte praktijk. Branches na samenvoeging vervuilen de referentielijst en kunnen verwarring veroorzaken. De meeste platforms (GitHub, GitLab) bieden aan om de branch direct na merge PR te verwijderen, en lokale branches worden verwijderd met het commando git branch -d.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook