Aller au contenu
Développement medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Pull requests et code review

9 min de lecture

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.

  • 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
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 branche
  1. Créez une branche depuis main à jour :

    Fenêtre de terminal
    git switch main
    git pull origin main
    git switch -c feature/user-avatar
  2. Travaillez avec des commits atomiques :

    Fenêtre de terminal
    # Chaque commit = un changement logique
    git add src/components/Avatar.tsx
    git commit -m "feat: ajouter le composant Avatar"
    git add src/pages/profile.tsx
    git commit -m "feat: intégrer Avatar dans la page profil"
  3. Rebasez sur main avant de pousser (pour éviter les conflits) :

    Fenêtre de terminal
    git fetch origin
    git rebase origin/main
  4. Poussez votre branche :

    Fenêtre de terminal
    git push -u origin feature/user-avatar
  5. Ouvrez la PR sur GitHub/GitLab via l’interface web

Une PR bien rédigée accélère la review et réduit les allers-retours.

Court, descriptif, au format conventionnel :

feat: ajouter le composant Avatar avec upload d'image
fix: corriger le redirect après déconnexion
docs: documenter l'API de notifications

Structurez avec ces sections :

## Contexte
Pourquoi cette modification est nécessaire.
## Changements
- Ajout du composant `Avatar` (upload + crop)
- Intégration dans la page profil
- Tests unitaires pour le crop
## Comment tester
1. Aller sur /profil
2. Cliquer sur l'avatar
3. Uploader une image > 2 Mo → vérifier le message d'erreur
## Captures d'écran
(si changement visuel)
Taille de PRLignes modifiéesTemps de reviewQualité
Petite< 20015-30 minExcellente
Moyenne200-50030-60 minBonne
Grande> 500> 1hMédiocre

Visez des PR de moins de 200 lignes. Au-delà, découpez en plusieurs PR dépendantes.

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.

CatégoriePoints à vérifier
LogiqueLe code fait-il ce qu’il prétend ? Cas limites ?
LisibilitéNoms clairs ? Structure compréhensible ?
TestsCouvrent-ils les cas importants ?
SécuritéInjection, XSS, secrets en dur ?
PerformanceRequête N+1, boucle coûteuse ?
ConventionsStyle du projet respecté ?

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é. »

Préfixez vos commentaires pour indiquer leur importance :

  • nit: — détail cosmétique, non bloquant
  • suggestion: — idée d’amélioration, discutable
  • question: — demande de clarification
  • concern: — point potentiellement problématique
  • (pas de préfixe) — changement requis avant merge

Au moment du merge, trois options s’offrent à vous :

StratégieRésultatAvantageInconvénient
Merge commitCommit de merge + historique completTraçabilité exacte de la PRGraphe en losange, git log plus difficile à lire
Squash and mergeUn seul commit sur mainHistorique de main très proprePerd le détail des commits de la PR
Rebase and mergeCommits rejoués linéairement sur mainHistorique linéaire avec commits individuelsLes hashes changent, attribution des auteurs peut varier

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.

SymptômeCause probableSolution
PR avec conflitsBranche pas à jour avec maingit rebase origin/main puis force-push
« CI failed » sur la PRTests cassés ou lintingCorrigez localement, poussez un nouveau commit
Reviewer ne répond pasPR trop grosse ou mal décriteDécoupez, améliorez la description, relancez poliment
Historique pollué de « fix review »Commits de correction post-reviewgit rebase -i pour squasher avant merge
  • 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

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn