Une pull request (PR) — ou merge request (MR) sur GitLab — est une demande d’intégration de votre branche dans une autre. C’est le mécanisme central de la collaboration moderne : votre code est relu, discuté et validé avant d’être mergé. Ce guide couvre le workflow complet, de la création à l’intégration.
Prérequis : Workflows distribués et Merge et conflits.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Créer une Pull Request bien structurée pour faciliter la revue
- Conduire une revue de code constructive sans bloquer l’équipe
- Naviguer dans le cycle de vie d’une PR de l’ouverture à la fusion
- Gérer les retours : amendments, force-push et itérations
Le cycle de vie d’une PR
Section intitulée « Le cycle de vie d’une PR »1. Créer une branche ↓2. Commiter et pousser ↓3. Ouvrir la PR ↓4. Review + discussions ↓5. Corrections (si demandées) ↓6. Approbation ↓7. Merge ↓8. Suppression de la brancheCréer une PR : le workflow Git
Section intitulée « Créer une PR : le workflow Git »-
Créez une branche depuis
mainà jour :Fenêtre de terminal git switch maingit pull origin maingit switch -c feature/user-avatar -
Travaillez avec des commits atomiques :
Fenêtre de terminal # Chaque commit = un changement logiquegit add src/components/Avatar.tsxgit commit -m "feat: ajouter le composant Avatar"git add src/pages/profile.tsxgit commit -m "feat: intégrer Avatar dans la page profil" -
Rebasez sur
mainavant de pousser (pour éviter les conflits) :Fenêtre de terminal git fetch origingit rebase origin/main -
Poussez votre branche :
Fenêtre de terminal git push -u origin feature/user-avatar -
Ouvrez la PR sur GitHub/GitLab via l’interface web
Rédiger une bonne PR
Section intitulée « Rédiger une bonne PR »Une PR bien rédigée accélère la review et réduit les allers-retours.
Le titre
Section intitulée « Le titre »Court, descriptif, au format conventionnel :
feat: ajouter le composant Avatar avec upload d'imagefix: corriger le redirect après déconnexiondocs: documenter l'API de notificationsLa description
Section intitulée « La description »Structurez avec ces sections :
## ContextePourquoi cette modification est nécessaire.
## Changements- Ajout du composant `Avatar` (upload + crop)- Intégration dans la page profil- Tests unitaires pour le crop
## Comment tester1. Aller sur /profil2. Cliquer sur l'avatar3. Uploader une image > 2 Mo → vérifier le message d'erreur
## Captures d'écran(si changement visuel)Bonnes pratiques de taille
Section intitulée « Bonnes pratiques de taille »| Taille de PR | Lignes modifiées | Temps de review | Qualité |
|---|---|---|---|
| Petite | < 200 | 15-30 min | Excellente |
| Moyenne | 200-500 | 30-60 min | Bonne |
| Grande | > 500 | > 1h | Médiocre |
Visez des PR de moins de 200 lignes. Au-delà, découpez en plusieurs PR dépendantes.
La draft PR
Section intitulée « La draft PR »Si votre travail n’est pas terminé mais que vous voulez un retour précoce, ouvrez une draft PR :
- GitHub : bouton « Create draft pull request »
- GitLab : préfixez le titre avec
Draft:ou cochez l’option
La draft PR signale aux reviewers que le code n’est pas prêt pour le merge mais que des retours sont bienvenus sur l’approche.
Faire une revue de code
Section intitulée « Faire une revue de code »Ce que chercher
Section intitulée « Ce que chercher »| Catégorie | Points à vérifier |
|---|---|
| Logique | Le code fait-il ce qu’il prétend ? Cas limites ? |
| Lisibilité | Noms clairs ? Structure compréhensible ? |
| Tests | Couvrent-ils les cas importants ? |
| Sécurité | Injection, XSS, secrets en dur ? |
| Performance | Requête N+1, boucle coûteuse ? |
| Conventions | Style du projet respecté ? |
Rédiger des commentaires constructifs
Section intitulée « Rédiger des commentaires constructifs »Les commentaires de review doivent être précis, bienveillants et actionnables :
| Au lieu de… | Écrivez… |
|---|---|
| « C’est nul » | « Cette approche risque X. Et si on faisait Y ? » |
| « Pourquoi t’as fait ça ? » | « Quelle est la raison de ce choix ? Je me demande si Z serait plus maintenable. » |
| « Change ça » | « Suggestion : renommer data en userProfile pour plus de clarté. » |
Les niveaux de commentaire
Section intitulée « Les niveaux de commentaire »Préfixez vos commentaires pour indiquer leur importance :
nit:— détail cosmétique, non bloquantsuggestion:— idée d’amélioration, discutablequestion:— demande de clarificationconcern:— point potentiellement problématique- (pas de préfixe) — changement requis avant merge
Stratégies de merge
Section intitulée « Stratégies de merge »Au moment du merge, trois options s’offrent à vous :
| Stratégie | Résultat | Avantage | Inconvénient |
|---|---|---|---|
| Merge commit | Commit de merge + historique complet | Traçabilité exacte de la PR | Graphe en losange, git log plus difficile à lire |
| Squash and merge | Un seul commit sur main | Historique de main très propre | Perd le détail des commits de la PR |
| Rebase and merge | Commits rejoués linéairement sur main | Historique linéaire avec commits individuels | Les hashes changent, attribution des auteurs peut varier |
Protéger la branche principale
Section intitulée « Protéger la branche principale »Configurez des règles de protection sur main :
- Revue obligatoire : au moins 1 (ou 2) approbation(s) avant merge
- CI/CD passante : les tests doivent être verts
- Branche à jour : la branche doit être rebasée sur
main - Pas de push direct : tout passe par une PR
Sur GitHub : Settings → Branches → Branch protection rules. Sur GitLab : Settings → Repository → Protected branches.
Dépannage : problèmes courants
Section intitulée « Dépannage : problèmes courants »| Symptôme | Cause probable | Solution |
|---|---|---|
| PR avec conflits | Branche pas à jour avec main | git rebase origin/main puis force-push |
| « CI failed » sur la PR | Tests cassés ou linting | Corrigez localement, poussez un nouveau commit |
| Reviewer ne répond pas | PR trop grosse ou mal décrite | Découpez, améliorez la description, relancez poliment |
| Historique pollué de « fix review » | Commits de correction post-review | git rebase -i pour squasher avant merge |
À retenir
Section intitulée « À retenir »- Une PR = un sujet, de préférence < 200 lignes
- Titre conventionnel (
feat:,fix:,docs:) + description structurée - La draft PR permet d’obtenir un retour précoce
- Les commentaires de review sont précis et bienveillants
- Protégez
main: revue obligatoire + CI passante - Choisissez une stratégie de merge cohérente dans l’équipe