Feature Branch — est une technique de branchement dans Git où chaque nouvelle fonctionnalité est développée dans une branche séparée, isolée du code principal. Cela permet à plusieurs développeurs de travailler simultanément sur différentes tâches sans risquer d'endommager la version stable du projet. Selon Atlassian, 2024, Feature Branch est un élément clé de Git Flow et est utilisé dans la plupart des projets commerciaux.
Points clés
feature/nom-fonction dans Git Flow standard.Feature Branch (branche de fonctionnalité) est une branche temporaire dans Git créée à partir de develop pour développer une fonctionnalité spécifique. Contrairement aux branches longue durée main et develop, les branches feature existent pour un temps limité — de quelques heures à quelques semaines.
L'objectif principal de la feature branch est d'isoler les modifications liées à une tâche du reste du code. Le développeur peut expérimenter, faire de nombreux commits et même casser du code dans sa propre branche sans affecter le travail des autres membres de l'équipe.
Une fois le développement terminé, la branche feature est fusionnée dans develop via une Pull Request avec une revue de code obligatoire. Après la fusion, la branche est généralement supprimée pour garder le référentiel propre.
Selon Vincent Driessen, 2010, le modèle Git Flow avec des branches feature est devenu un standard de l'industrie grâce à la séparation claire des responsabilités entre différents types de branches.
Le workflow avec les branches feature consiste en une séquence d'étapes que le développeur effectue pour chaque nouvelle fonctionnalité. Ce processus minimise les conflits de fusion et assure le contrôle qualité du code.
La synchronisation périodique avec develop est d'une importance cruciale. Plus une branche feature vit longtemps sans fusionner les modifications de develop, plus la probabilité de conflits lors de la fusion finale est élevée.
| Fréquence de synchronisation | Risque de conflits | Confort de développement |
|---|---|---|
| Quotidienne | Faible | Nécessite un rebase ou merge fréquent |
| Hebdomadaire | Moyen | Rythme confortable, conflits modérés |
| Mensuelle | Élevé | Risque de résolution complexe de conflits |
| Jamais | Critique | La fusion peut être impossible sans perte de données |
Le nommage des branches est une partie importante de la discipline d'équipe. Un standard de nommage uniforme permet d'identifier rapidement sur quelle tâche on travaille et qui l'exécute.
feature/added-auth-module.feature/PROJ-42-add-login.feature/feat/analytics-dashboard.L'utilisation de l'ID de tâche de JIRA, Trello ou d'un autre système est une meilleure pratique. Elle lie automatiquement le code à la tâche et simplifie la recherche de branches via git log.
Pull Request (ou Merge Request dans GitLab) est une demande de fusion de la branche feature dans develop. Une PR n'est pas seulement une opération technique, mais un processus de revue de code en équipe qui améliore la qualité du code et diffuse les connaissances au sein de l'équipe.
Une bonne PR contient un titre avec une brève description de la tâche, un lien vers le ticket et une description des modifications. Le développeur doit indiquer ce qui a été fait exactement, quels fichiers ont été modifiés et s'il existe des risques potentiels pour d'autres parties du projet.
L'équipe examine le code dans la PR, laisse des commentaires, demande des modifications (change requests) et approuve la fusion (approve). Après approbation, un merge ou squash merge est effectué.
Le temps moyen de revue d'une PR dans le développement mobile est de 4 à 24 heures. La bibliothèque Danger automatise une partie des vérifications en exécutant des linters et des tests directement dans la PR.
Après l'approbation de la PR, la branche feature peut être fusionnée dans develop de différentes manières. Le choix de la stratégie de fusion affecte l'historique des commits et la possibilité d'annuler les modifications.
Pour les projets mobiles avec des versions fréquentes, le squash merge est le plus utilisé : il fournit un historique propre dans develop, tandis que les détails du développement restent dans la description de la PR et dans la tâche du tracker.
Même les développeurs expérimentés commettent des erreurs en travaillant avec des branches feature. Connaître les problèmes typiques permet d'éviter la perte de temps et de données.
La meilleure façon d'éviter ces problèmes est de convenir des règles de travail au début du projet et d'utiliser des vérifications automatisées dans le pipeline CI/CD.
Considérons un scénario pratique : un développeur commence une nouvelle fonctionnalité d'authentification dans une application mobile. Il crée une branche feature, travaille sur le code et termine la tâche par une Pull Request.
# Mettre à jour develop et créer la branche feature
git checkout develop
git pull origin develop
git checkout -b feature/add-login-screen
# Travail sur la fonctionnalité : commits
git add src/ui/login/
git commit -m "Add login screen layout"
# Pousser la branche feature vers le serveur distant
git push origin feature/add-login-screen
# Synchronisation avec develop (rebase)
git fetch origin develop
git rebase origin/develop
# Après approbation de la PR : mettre à jour develop local et supprimer la branche
git checkout develop
git pull origin develop
git branch -d feature/add-login-screen
La commande git branch -d supprime la branche uniquement après que ses modifications ont été entièrement fusionnées. Si la branche n'est pas fusionnée, Git suggérera d'utiliser git branch -D pour une suppression forcée — utilisez ce drapeau avec prudence.
Le pipeline CI/CD doit s'exécuter pour chaque branche feature avant de créer une PR. Cela permet de détecter les problèmes à un stade précoce, avant que le code n'arrive en revue par d'autres développeurs.
# GitHub Actions pour vérifier la branche feature
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
Le pipeline vérifie que le code compile, que les tests passent et que le style de code est conforme aux normes de l'équipe. Ce n'est qu'après avoir passé toutes les vérifications qu'une Pull Request peut être créée.
Questions fréquentes
Oui, c'est une pratique courante. Chaque développeur peut travailler dans sa propre branche feature, et toutes se synchronisent avec develop indépendamment. La règle principale est une branche par tâche pour éviter les dépendances croisées dans le code.
Exécutez git rebase origin/develop sur votre branche feature. Si des conflits surviennent, résolvez-les un par un — les commits seront réécrits sur le dernier état de develop. Après le rebase, vous aurez besoin de git push --force pour mettre à jour la branche distante.
Si la tâche est annulée, supprimez simplement la branche feature. Utilisez git branch -d feature/nom pour la branche locale et git push origin --delete feature/nom pour la distante. Toutes les modifications non commitées seront perdues.
Essentiellement, c'est la même chose. Différentes équipes utilisent différents préfixes : feature/, task/, feat/. Il n'y a pas de différence dans la mécanique de Git — ce sont toutes des branches temporaires créées à partir de develop pour un développement isolé.
Oui, c'est une pratique obligatoire. Les branches après fusion encombrent la liste des références et peuvent causer de la confusion. La plupart des plateformes (GitHub, GitLab) proposent de supprimer la branche immédiatement après le merge de la PR, et les branches locales sont supprimées avec la commande git branch -d.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi