DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesCollaborer efficacement avec Git et GitHub07 - Projet Capstone : Collaborer sur un projet open source avec GitHub

Détails

  • 45 minutes
  • Avancé

Objectifs

  • Forker un dépôt et configurer les remotes
  • Travailler avec stash et rebase
  • Créer et gérer des Pull Requests
  • Résoudre un conflit lors d'un rebase
  • Utiliser les tags et explorer l'historique
Module Collaborer efficacement avec Git et GitHub

Exercice 07 : Projet Capstone - Collaborer sur un Projet Open Source avec GitHub

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Forker un dépôt GitHub et configurer les remotes origin et upstream
  • ✅ Mettre de côté un travail en cours avec git stash
  • ✅ Synchroniser votre fork avec git pull --rebase
  • ✅ Créer une Pull Request soignée sur GitHub
  • ✅ Résoudre un conflit lors d'un rebase interactif
  • ✅ Créer un tag de version et pousser les contributions

Durée estimée : 45 minutes

Difficulté : ⭐⭐⭐⭐☆ (Avancé)

Prérequis :

  • Avoir complété les exercices 01 à 05
  • Module Git Intermédiaire complété (remotes, PR, stash, rebase, tags)
  • Un compte GitHub configuré avec accès SSH ou HTTPS

📖 Contexte

Cet exercice simule une contribution à un projet d'équipe hébergé sur GitHub. Vous allez forker le repository de votre portfolio DevOps (créé dans le capstone précédent), y apporter des améliorations en suivant un workflow collaboratif professionnel, et proposer une Pull Request.

Cet exercice mobilise toutes les compétences du module :

  • Remotes origin / upstream
  • git stash / git stash pop
  • git rebase et résolution de conflits
  • Création et review de Pull Requests
  • git tag annoté

📋 Énoncé

Vous contribuez à un projet partagé. Travaillez sur une nouvelle fonctionnalité, synchronisez-vous avec les changements en amont, et proposez une Pull Request propre.


🧭 Déroulement de l'exercice

Tâche 1 : Forker et configurer les remotes

Depuis GitHub, forkez le repository devops-portfolio de votre compte vers un second compte (ou utilisez le repository d'un collègue). Clonez votre fork en local et configurez le remote upstream pointant vers le dépôt d'origine.

Indice : git clone <URL-de-votre-fork>, puis git remote add upstream <URL-du-repo-original>. Vérifiez avec git remote -v : vous devez voir origin (votre fork) et upstream (l'original).

Vérification : git remote -v liste deux remotes : origin et upstream.


Tâche 2 : Créer une branche de contribution

Créez une branche feature/cv-section et commencez à ajouter un fichier cv.md avec une section "Formation". Après 1 commit, interrompez-vous : une urgence sur main vous oblige à changer de contexte. Mettez en attente votre travail avec git stash.

Indice : git switch -c feature/cv-section, faites votre premier commit, puis git stash -m "WIP: ajouter section formation dans cv.md". Vérifiez que votre répertoire de travail est propre avec git status.

Vérification : git stash list doit afficher votre entrée. git status doit afficher "nothing to commit".


Tâche 3 : Gérer l'urgence sur main et récupérer votre travail

Sur main, corrigez rapidement une faute de frappe dans README.md (ajoutez un commit de correction). Revenez ensuite sur feature/cv-section et restaurez votre travail avec git stash pop. Terminez le fichier cv.md en ajoutant une section "Expérience" et faites un second commit.

Indice : git switch main pour l'urgence, puis git switch feature/cv-section et git stash pop pour reprendre. git stash pop applique le dernier stash ET le supprime de la liste.

Vérification : git stash list doit être vide. git log --oneline feature/cv-section doit afficher 2 commits (+ le commit initial).


Tâche 4 : Synchroniser avec l'upstream et rebaser

L'auteur du dépôt original a entre-temps ajouté un commit dans main. Récupérez ses changements avec git fetch upstream, puis rebasez votre branche feature/cv-section sur upstream/main.

Pour simuler un changement en amont : ajoutez directement un commit dans le dépôt original (ou faites un commit dans main de votre clone upstream), puis rapatriez-le.

Indice : git fetch upstream récupère sans merger. git rebase upstream/main déplace vos commits par-dessus les commits upstream. Si un conflit apparaît, résolvez-le, git add, puis git rebase --continue.

Vérification : git log --oneline --graph doit montrer votre branche linéaire au-dessus des commits upstream, sans commit de merge parasite.


Tâche 5 : Pousser et créer une Pull Request

Poussez votre branche feature/cv-section sur votre fork (origin). Créez ensuite une Pull Request sur GitHub de votre fork vers le dépôt original, avec :

  • Un titre clair : feat: ajouter section CV avec formation et expérience
  • Une description expliquant les changements apportés
  • Au moins un label (par ex. enhancement)

Indice : git push origin feature/cv-section. Sur GitHub, le bouton "Compare & pull request" apparaît automatiquement. La base doit être le dépôt original, la comparaison votre fork.

Vérification : La PR apparaît dans l'onglet "Pull requests" du dépôt original. La branche est linéaire (pas de merge commits inutiles grâce au rebase).


Tâche 6 : Créer un tag de version après le merge

Une fois la PR mergée (simulez le merge directement sur GitHub ou localement), créez un tag annoté v2.0.0 sur main marquant cette version avec le CV ajouté. Poussez le tag.

Indice : git switch main && git pull upstream main, puis git tag -a v2.0.0 -m "Release v2.0.0 - ajout section CV". Pousser avec git push origin v2.0.0.

Vérification : git tag liste v2.0.0. Sur GitHub, l'onglet "Tags" ou "Releases" affiche le tag.


🗂️ Mini-Projet : Workflow de contribution complet

Vérifiez l'état final de votre dépôt :

bash
# État des remotes
git remote -v

# Branches locales et distantes
git branch -a

# Historique linéaire
git log --oneline --graph main

# Tags créés
git tag -l

# Stash vide (travail terminé)
git stash list

# Vérifier que cv.md est dans main
cat cv.md

Checkpoints de validation :

  • git remote -v liste origin et upstream
  • git log --oneline --graph est linéaire (pas de merge commits parasites grâce au rebase)
  • git stash list est vide
  • cv.md contient les deux sections "Formation" et "Expérience"
  • git tag retourne v2.0.0
  • La Pull Request est visible sur GitHub

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Forker et configurer les remotes
  • Tâche 2 : Créer une branche de contribution
  • Tâche 3 : Gérer l'urgence sur main et récupérer votre travail
  • Tâche 4 : Synchroniser avec l'upstream et rebaser
  • Tâche 5 : Pousser et créer une Pull Request
  • Tâche 6 : Créer un tag de version après le merge
  • 🗂️ Mini-Projet : Workflow de contribution complet