Exercice 02 : Créer et gérer des Pull Requests
🎯 Objectifs
À la fin de cet exercice, vous serez capable de :
- ✅ Créer une branche
feature/dédiée à un changement - ✅ Ouvrir une Pull Request sur GitHub avec description et labels
- ✅ Demander une review à un collaborateur
- ✅ Merger une PR en choisissant la bonne stratégie
Durée estimée : 20 minutes | Difficulté : ⭐⭐⭐☆☆
📖 Contexte
Les Pull Requests (PR) sont le coeur du workflow collaboratif sur GitHub. Elles permettent de proposer des changements, d'en discuter, de les faire relire et de les intégrer de manière contrôlée. Sur les projets professionnels, aucun code ne va en production sans passer par une PR.
Comprendre les stratégies de merge (merge commit, squash and merge, rebase and merge) vous permettra de garder un historique Git propre et lisible.
📋 Énoncé
Vous travaillez sur un projet git-intermediaire-tp. Vous allez implémenter une petite fonctionnalité sur une branche dédiée, ouvrir une PR sur GitHub, la configurer correctement, et la merger.
🧭 Déroulement
Tâche 1 : Créer une branche feature
À partir de main, créez une branche feature/add-readme-sections. Ajoutez deux nouvelles sections dans le README.md (par exemple "Installation" et "Usage"). Committez avec un message clair.
Indice : Conventions de nommage :
feature/,fix/,chore/,docs/. Un bon message de commit suit le formattype: description(Conventional Commits).
Vérification : git log --oneline -2 affiche votre commit sur la branche feature/add-readme-sections.
Tâche 2 : Pousser la branche et ouvrir une PR
Poussez la branche sur GitHub avec git push -u origin feature/add-readme-sections. Sur GitHub, ouvrez une Pull Request vers main avec un titre descriptif et une description expliquant les changements.
Indice : Après un push, GitHub affiche souvent une bannière "Compare & pull request". Vous pouvez aussi aller dans l'onglet "Pull requests" > "New pull request".
Vérification : La PR est visible dans l'onglet "Pull requests" de votre repository avec le statut "Open".
Tâche 3 : Configurer la PR
Ajoutez un label documentation à la PR. Assignez-vous comme assignee. Ajoutez un commentaire décrivant pourquoi ce changement est utile.
Indice : Les labels, assignees et reviewers se configurent dans le panneau de droite de la PR sur GitHub. Les labels doivent être créés au préalable dans Settings > Labels.
Vérification : La PR affiche votre nom en "Assignee" et le label documentation.
Tâche 4 : Ajouter un commit sur la PR ouverte
Depuis GitHub ou en local, ajoutez un troisième commit sur la branche (par exemple corriger une faute dans le README). Observez que la PR se met à jour automatiquement.
Indice : En local : modifiez,
git add,git commit,git push. La PR intègre tous les commits de la branche - elle se met à jour en temps réel.
Vérification : La PR affiche désormais 2 commits dans l'onglet "Commits".
Tâche 5 : Merger la PR
Mergez la PR en utilisant "Squash and merge". Observez l'effet sur l'historique de main. Supprimez la branche distante après le merge.
Indice : "Squash and merge" fusionne tous les commits de la PR en un seul commit dans
main- idéal pour garder un historique propre. Après le merge, GitHub propose "Delete branch". En local :git checkout main && git pull && git branch -d feature/add-readme-sections.
Vérification : git log --oneline main affiche un seul commit résumant tous vos changements.
🗂️ Mini-Projet
# Créer la branche et committer
git checkout main && git pull
git checkout -b feature/add-readme-sections
# ... éditer README.md ...
git add README.md
git commit -m "docs: ajouter sections Installation et Usage"
# Pousser et ouvrir la PR
git push -u origin feature/add-readme-sections
# -> ouvrir la PR sur GitHub
# Après le merge, nettoyer
git checkout main
git pull origin main
git branch -d feature/add-readme-sections
git remote prune originCheckpoints :
- La branche
feature/add-readme-sectionsexiste en local et sur GitHub - La PR est ouverte avec titre, description, label et assignee
- La PR contient au moins 2 commits
- Après merge en "Squash",
maincontient un seul commit résumé - La branche distante est supprimée