Skip to content
Commencer

Le Workflow Pull Request (PR)

SlidesPDFPPTX
Niveau : Intermediate
Durée : 2h

Prérequis

  • Maîtriser branches, merge et collaboration GitHub (Ateliers 05-07)
  • Savoir faire git push -u et git fetch/pull
  • Avoir un repo GitHub avec droits de push

Objectifs d'apprentissage

  • Expliquer le workflow PR en 7 étapes (Issue→Branch→Commit→Push→PR→Review→Merge)
  • Créer une PR via UI et via gh pr create, avec Draft et templates
  • Gérer reviewers, CODEOWNERS, et les types de review
  • Appliquer les bonnes pratiques de revue (petites PRs, bienveillance, checks)

Sans PR, tout le monde pousse sur main → chaos, régressions, pas de recul.

Avec PR, chaque changement :

  • est présenté (titre + description),
  • est discuté ligne-par-ligne,
  • est validé par des pairs,
  • déclenche la CI (tests).
<pre dir="ltr" class="mermaid">flowchart LR A[Issue&lt;br/&gt;bug/feature] --&gt; B[Branch&lt;br/&gt;feature/xxx] B --&gt; C[Commits&lt;br/&gt;conventionnels] C --&gt; D[Push&lt;br/&gt;origin/feature] D --&gt; E[Pull Request&lt;br/&gt;Draft → Ready] E --&gt; F[Review&lt;br/&gt;Approve / Request changes] F --&gt; G[Checks&lt;br/&gt;CI vert] G --&gt; H[Merge&lt;br/&gt;squash/merge/rebase]</pre>

Sans PR

git push origin main direct → main cassé → rollback d’urgence

Avec PR

feature → PR → 1 approbation + CI → merge → main protégé

  1. Push Local

git push origin branch

  1. Ouvrir la PR

Sur GitHub

  1. Code Review

Retours & Corrections

  1. Merge PR

Fusionné dans main


  1. Issue → assignez-vous la tâche Closes #42 2. Branch depuis main à jour : bash git switch main git pull origin main git switch -c feature/bouton-bleu 3. Commits atomiques 4. Push avec upstream

Commandes à exécuter

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$_

Commandes à exécuter

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$_

  1. Bandeau jaune Compare & pull request → Cliquez
  2. Titre : feat: add bouton bleu (Closes #42)
  3. Description — utilisez le template :
## Contexte
Closes #42
## Changements
- Ajout style bouton bleu
## Screenshots
![bouton bleu]
## Checklist
- [x] Tests verts
- [x] Pas de secret commité

Templates dans .github/PULL_REQUEST_TEMPLATE.md et .github/ISSUE_TEMPLATE/* remplissent automatiquement.

Terminal window
gh pr create --title "feat: add bouton bleu" --body "Closes #42" --draft
gh pr create --fill # remplit depuis les commits
gh pr view --web
gh pr checkout 42
gh pr view 42 --json state,reviewDecision

État Signification Mergeable ?
Draft Brouillon, WIP, CI peut tourner, pas de review requise ❌ Non
Ready for review Prête, reviewers notifiés ✅ Si checks verts
Changes requested Un reviewer a demandé des corrections ❌ Attend nouveau push
Approved 1+ Approve ✅
Merged Fusionnée dans main —
Closed Abandonnée —

Convertir :

Terminal window
gh pr ready 42
gh pr ready 42 --undo

.github/CODEOWNERS

# Frontend → @org/frontend-leads
*.js @joinhashcode/frontend
/docs/ @joinhashcode/docs-team
* @joinhashcode/tech-leads

Toute PR touchant *.js notifie automatiquement frontend.

  • Comment — question, sans bloquer
  • Approve — LGTM, on peut merger
  • Request changes — bloque le merge jusqu’à correction
  • Suggestion — Suggestion sur une ligne → bouton Commit suggestion

Bienveillance Le but n’est pas de juger, mais d’améliorer la qualité ensemble.

Pour l'auteur

  • Petite PR (<300 lignes) → revue en 15 min - Description claire + screenshots - Répondez à tous les commentaires, même avec un emoji

Pour le reviewer

  • Expliquez le pourquoi, pas juste le quoi - Proposez une alternative : suggestion - Approve dès que le fond est OK (nit = non bloquant) - Après correction : re-request review ou nouveau Approve

Commandes à exécuter

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$_

  • Merge commit → garde tous les commits (git merge --no-ff)
  • Squash → 1 commit propre sur main (recommandé pour features)
  • Rebase → historique linéaire (avancé, réécrit l’historique)

main doit être protégée : pas de push direct, 1 Approve requis, CI verte.


Question

Qu'est-ce qu'une PR ?

Cliquer pour révéler la réponse
Réponse

Demande de fusion d'une branche (feature/xxx) dans main, avec description, review et CI.

Cliquer pour voir la question
Question

Commande pour pousser une feature prête à PR ?

Cliquer pour révéler la réponse
Réponse

git push -u origin feature/xxx

Cliquer pour voir la question
Question

Draft vs Ready ?

Cliquer pour révéler la réponse
Réponse

Draft = brouillon non mergeable. Ready = prête pour review et merge.

Cliquer pour voir la question
Question

À quoi sert CODEOWNERS ?

Cliquer pour révéler la réponse
Réponse

Assigner automatiquement les reviewers selon les fichiers modifiés (ex: *.js → @frontend).

Cliquer pour voir la question
Question

3 types de review ?

Cliquer pour révéler la réponse
Réponse

Comment, Approve, Request changes (bloquant). + Suggestions.

Cliquer pour voir la question
Question

Que mettre dans une description de PR ?

Cliquer pour révéler la réponse
Réponse

Contexte (Closes #), changements, screenshots, checklist tests.

Cliquer pour voir la question
Question

Comment créer une PR en draft via gh ?

Cliquer pour révéler la réponse
Réponse

gh pr create --draft --fill ou --title --body

Cliquer pour voir la question
Question

Pourquoi petites PRs ?

Cliquer pour révéler la réponse
Réponse

Revue plus rapide, moins de bugs, feedback tôt.

Cliquer pour voir la question

1. Qu'est-ce qu'une Pull Request ?

2. Pourquoi garder les PRs petites ?

3. Quelle commande crée une PR draft via gh ?

4. Que fait CODEOWNERS ?


Terminal window
# Préparer
git switch main && git pull origin main
git switch -c feature/xxx
git commit -m "feat: xxx" && git push -u origin feature/xxx
# Créer PR
gh pr create --draft --fill
gh pr create --title "feat: xxx" --body "Closes #42"
gh pr view --web
gh pr checkout 42
# Review
gh pr view 42 --json reviewDecision
gh pr review --approve
gh pr review --request-changes --body "…"
# Draft ↔ Ready
gh pr ready 42
gh pr ready 42 --undo
# Merge
gh pr merge 42 --squash --delete-branch
gh pr merge 42 --merge
gh pr merge 42 --rebase

Votre Progression0%


  • Le workflow moderne protège main : Issue → Branch → Commits → Push → PR Draft → Review → Merge squash.
  • Une PR petite (<300 lignes) avec un template clair se review en 15 minutes.
  • CODEOWNERS automatise les reviewers, gh pr automatise la création et le suivi.
  • Ouvrir une PR depuis main au lieu d’une feature → toujours git switch -c feature/xxx depuis main à jour.
  • Pousser sans -u puis git push échoue → git push -u origin feature/xxx au premier push.
  • Laisser une Draft en attente → penser à gh pr ready.
  • Commenter sans Approve → la PR reste bloquée par la branch protection.

PR maîtrisée, voyons comment organiser le travail à l’échelle du projet : Issues, labels, Projects, milestones.

Étape suivante : Gestion de Projet GitHub

HashCode Workshops
Part of the JoinHashCode ecosystem

Ctrl + K Rechercher dans les workshops