Exercice 01 : Travailler avec les Remotes GitHub
🎯 Objectifs
À la fin de cet exercice, vous serez capable de :
- ✅ Configurer plusieurs remotes (
origin,upstream) - ✅ Pousser une branche locale vers GitHub avec
git push -u - ✅ Récupérer les changements distants avec
git fetchetgit pull - ✅ Comprendre la différence entre
fetchetpull
Durée estimée : 20 minutes | Difficulté : ⭐⭐⭐☆☆
📖 Contexte
Dans un projet d'équipe, votre code local doit rester synchronisé avec le dépôt distant. Git appelle ces dépôts distants des remotes. Par convention, le remote principal s'appelle origin (votre fork ou votre propre repo), et le remote du projet d'origine s'appelle upstream.
Maîtriser ces deux commandes - fetch et pull - est essentiel pour collaborer sans écraser le travail des autres.
📋 Énoncé
Vous disposez d'un compte GitHub. Vous allez créer un repository, le cloner, configurer plusieurs remotes, pousser des branches et synchroniser les changements distants.
🧭 Déroulement
Tâche 1 : Cloner un repository et inspecter les remotes
Créez un nouveau repository public sur GitHub nommé git-intermediaire-tp. Clonez-le en local. Listez les remotes configurés.
Indice :
git clone <URL>configure automatiquementorigin. Utilisezgit remote -vpour afficher les remotes et leurs URLs.
Vérification : git remote -v affiche deux lignes origin (fetch et push) pointant vers GitHub.
Tâche 2 : Pousser une branche avec tracking
Créez une branche feature/hello, ajoutez un fichier hello.txt avec votre message, committez, et poussez la branche vers GitHub en configurant le tracking.
Indice : La première fois, utilisez
git push -u origin feature/hello. Le flag-u(upstream) configure le tracking - les prochainsgit pushn'auront plus besoin du nom de la branche.
Vérification : Sur GitHub, l'onglet "Branches" liste feature/hello. En local, git branch -vv affiche [origin/feature/hello].
Tâche 3 : Récupérer un changement distant avec fetch
Directement sur l'interface GitHub, éditez hello.txt et committez le changement. En local, récupérez ce commit avec git fetch, observez la différence, puis intégrez-le.
Indice :
git fetch origintélécharge sans toucher votre working directory.git diff main origin/mainmontre ce qui diffère.git merge origin/mainintègre ensuite.
Vérification : git log --oneline -5 affiche le commit créé sur GitHub.
Tâche 4 : Ajouter un remote upstream
Forkez un repository public (ou créez un second repo sur votre compte). Ajoutez ce repo comme remote upstream dans votre projet local.
Indice :
git remote add upstream <URL>. La convention est :origin= votre fork personnel,upstream= repo original du projet.
Vérification : git remote -v liste à la fois origin et upstream avec leurs URLs.
Tâche 5 : Comprendre fetch vs pull
Faites un commit dans le repo upstream (directement sur GitHub). Testez d'abord git fetch upstream, observez l'état, puis testez git pull upstream main.
Indice :
fetch= télécharge les refs distantes SANS modifier votre branche locale.pull=fetch+mergeautomatique.fetchest plus sûr : vous contrôlez quand vous intégrez.
Vérification : Après git pull upstream main, git log --oneline affiche les commits upstream dans votre historique.
🗂️ Mini-Projet
# Cloner et inspecter
git clone git@github.com:<user>/git-intermediaire-tp.git
cd git-intermediaire-tp
git remote -v
# Créer et pousser une branche avec tracking
git checkout -b feature/hello
echo "Hello DevOps" > hello.txt
git add hello.txt
git commit -m "feat: ajouter hello.txt"
git push -u origin feature/hello
# Récupérer des changements distants
git fetch origin
git diff main origin/main
git merge origin/main
# Ajouter un remote upstream
git remote add upstream <URL-repo-original>
git fetch upstream
git merge upstream/mainCheckpoints :
git remote -vafficheoriginetupstream- La branche
feature/helloest visible sur GitHub git branch -vvaffiche le tracking configuré- Les commits distants sont récupérés avec
git fetch