// GitHub & Git

La pull request expliquée : bien collaborer sur GitHub

La pull request (ou PR) est le cœur battant de la collaboration sur GitHub. C’est le mécanisme par lequel vous proposez vos changements, les faites relire, discutez ligne par ligne, puis intégrez le tout au projet. Bien maîtrisée, elle transforme le travail en équipe en un processus fluide et sûr ; mal comprise, elle génère des conflits et des allers-retours pénibles. Ce guide décortique tout le cycle : du fork à la fusion, en passant par la revue et la résolution des conflits.

Qu’est-ce qu’une pull request

Une pull request est une demande d’intégration : vous dites au dépôt « voici une branche contenant mes modifications, merci de les examiner et de les fusionner ». Malgré son nom, elle ne « tire » rien automatiquement — c’est avant tout un espace de discussion et de revue construit autour d’un ensemble de commits.

Une PR compare deux branches : la branche source (vos changements) et la branche cible (généralement main). GitHub affiche la différence, permet de commenter chaque ligne, lance les tests automatisés, et n’autorise la fusion qu’une fois tout le monde d’accord. C’est un garde-fou qui empêche d’envoyer directement du code non relu dans la branche principale.

Deux workflows : branche ou fork

Il existe deux façons d’arriver à une PR, selon vos droits sur le dépôt.

Le workflow par branche s’applique quand vous êtes membre du projet et pouvez y pousser. Vous créez une branche dédiée, y travaillez, la poussez, puis ouvrez la PR.

# Se placer sur main et récupérer la dernière version
git switch main
git pull

# Créer une branche dédiée à votre fonctionnalité
git switch -c feature-recherche

# ... modifications, puis :
git add .
git commit -m "Ajoute la barre de recherche"
git push -u origin feature-recherche

Le workflow par fork s’applique aux projets où vous n’avez pas les droits d’écriture (typiquement l’open source). Vous cliquez sur Fork pour créer votre copie personnelle du dépôt, vous y poussez votre branche, puis vous ouvrez une PR depuis votre fork vers le dépôt d’origine.

# Cloner votre fork
git clone https://github.com/vous/projet.git
cd projet

# Ajouter le dépôt d'origine comme remote "upstream"
git remote add upstream https://github.com/original/projet.git

# Rester à jour avec le projet d'origine
git fetch upstream
git switch main
git merge upstream/main

Ce second remote, upstream, est essentiel : il vous permet de synchroniser votre fork avec le projet d’origine qui continue d’évoluer pendant que vous travaillez.

Ouvrir la pull request

Une fois votre branche poussée, GitHub affiche un bandeau proposant de créer la PR — ou passez par l’onglet Pull requests > New. Vérifiez que les branches source et cible sont correctes, puis rédigez :

  • un titre clair et concis (« Ajoute la barre de recherche produits ») ;
  • une description qui explique le pourquoi, pas seulement le quoi : le problème résolu, les choix techniques, ce qui reste à faire.

Bonne pratique — une PR = une intention Gardez vos pull requests petites et focalisées. Une PR qui touche 40 fichiers pour trois fonctionnalités différentes est un cauchemar à relire. Un changement = une PR : la revue est plus rapide, les bugs plus faciles à repérer, et la fusion moins risquée.

Si le dépôt utilise un template de PR, remplissez-le : il liste souvent une checklist (tests ajoutés, documentation mise à jour) qui fait gagner du temps à tout le monde.

La revue de code

C’est le moment central. Les relecteurs parcourent l’onglet Files changed, où chaque ligne peut recevoir un commentaire. Ils peuvent :

  • commenter une ligne pour poser une question ou suggérer une amélioration ;
  • proposer une suggestion de code directement applicable en un clic ;
  • rendre un verdict : Approve (validé), Request changes (modifications demandées) ou Comment (remarque neutre).

De votre côté, répondez aux commentaires, poussez de nouveaux commits sur la même branche — ils apparaissent automatiquement dans la PR — et relancez la discussion. Ce va-et-vient est normal et sain : il diffuse la connaissance dans l’équipe et améliore le code.

Côté attitude, restez factuel et bienveillant des deux côtés. Une revue critique le code, jamais la personne. Une bonne PR se lit comme une conversation, pas comme un tribunal.

Résoudre les conflits

Pendant que votre PR mûrit, main continue d’avancer. Si quelqu’un modifie les mêmes lignes que vous, GitHub signale un conflit et bloque la fusion. Il faut alors réconcilier les deux versions localement :

# Récupérer la branche cible à jour
git switch main
git pull

# Revenir sur votre branche et y intégrer main
git switch feature-recherche
git merge main

Git marque les zones en conflit dans les fichiers concernés :

<<<<<<< HEAD
const titre = "Recherche produits";
=======
const titre = "Rechercher un produit";
>>>>>>> main

Vous choisissez la bonne version (ou une combinaison des deux), supprimez les marqueurs <<<<, ==== et >>>>, puis validez :

git add fichier.js
git commit -m "Résout le conflit sur le titre de recherche"
git push

La PR se met à jour et redevient fusionnable. Si vous manipulez encore mal les branches, notre mémo des commandes Git essentielles couvre merge, rebase et compagnie en détail.

Fusionner : merge, squash ou rebase

GitHub propose trois stratégies de fusion, chacune avec sa logique :

StratégieCe qu’elle faitQuand l’utiliser
Merge commitAjoute un commit de fusion, garde tous vos commitsHistorique complet, traçabilité fine
Squash and mergeCompresse tous les commits de la PR en un seulHistorique propre, une PR = un commit
Rebase and mergeRejoue vos commits sur la cible, sans commit de fusionHistorique linéaire, sans commit de merge

Le squash est souvent le choix par défaut des équipes : il garde main lisible avec un commit par fonctionnalité, tout en préservant le détail dans la PR archivée. Une fois la fusion faite, supprimez la branche (GitHub le propose automatiquement) pour ne pas encombrer le dépôt.

Les bonnes pratiques en résumé

Pour des PR qui avancent vite et bien :

  • Petites et ciblées : un objectif par pull request.
  • Une description qui explique le pourquoi, pas juste le quoi.
  • À jour avec la cible avant d’ouvrir, pour limiter les conflits.
  • Réactif aux commentaires : répondez, corrigez, faites avancer.
  • Verte au vert : attendez que les tests automatisés passent avant de fusionner.

La pull request n’est pas une formalité administrative : c’est le lieu où la qualité se construit collectivement. En la traitant comme une conversation structurée autour du code, vous transformez la contrainte de la relecture en un vrai levier de qualité et d’apprentissage.

À lire ensuite