Aller au contenu principal

TP4 — GitHub & Dépôts distants

Travaux Pratiques 60 min Module 03

Objectifs

À la fin de ce TP, vous aurez :

  • Poussé un projet local sur GitHub
  • Configuré les remotes origin et upstream
  • Cloné un dépôt existant
  • Forké un dépôt et soumis une Pull Request
  • Synchronisé votre fork avec le dépôt original

Partie 1 : Pousser un projet local sur GitHub

# Créer un nouveau projet local
mkdir git-tp4-github
cd git-tp4-github
git init

echo "# Mon Projet GitHub" > README.md
echo "Un projet créé pendant le TP4 du cours Git & GitHub." >> README.md

Créez app.py :

def bonjour(nom):
"""Retourner un message de salutation."""
return f"Bonjour, {nom} ! Bienvenue sur GitHub."

if __name__ == "__main__":
print(bonjour("GitHub"))
git add .
git commit -m "feat: projet initial pour TP4 GitHub"

# Créer le dépôt sur GitHub via CLI
gh repo create git-tp4-github \
--public \
--description "TP4 - Initiation à GitHub et aux dépôts distants" \
--source . \
--push

# Vérifier que le push a fonctionné
gh repo view --web

Partie 2 : Travailler avec les remotes

# Vérifier les remotes configurés
git remote -v

# Faire quelques modifications et pousser
echo "\n## Changelog\n\n- Version initiale" >> README.md
git add README.md
git commit -m "docs: ajouter le changelog au README"
git push

# Vérifier sur GitHub
gh repo view --web

Simuler la collaboration (deux machines)

# Simuler qu'un collègue a poussé un changement
# (Modifiez directement via l'interface GitHub : éditez README.md)
# Puis récupérez les changements

# Méthode 1 : fetch puis inspecter
git fetch origin
git log HEAD..origin/main --oneline
git diff HEAD origin/main

# Appliquer les changements
git merge origin/main

# Méthode 2 : pull direct
git pull --rebase origin main

Partie 3 : Branches distantes

# Créer une branche de fonctionnalité et la pousser
git switch -c feature/amelioration-salutation

# Modifier app.py

Mettez à jour app.py :

def bonjour(nom, langue="fr"):
"""Retourner un message de salutation multilingue."""
messages = {
"fr": f"Bonjour, {nom} !",
"en": f"Hello, {nom}!",
"es": f"¡Hola, {nom}!",
"ar": f"مرحباً، {nom}!"
}
return messages.get(langue, messages["fr"])

if __name__ == "__main__":
for langue in ["fr", "en", "es", "ar"]:
print(bonjour("GitHub", langue))
git add app.py
git commit -m "feat: ajouter support multilingue pour les salutations"

# Pousser la branche distante
git push -u origin feature/amelioration-salutation

# Voir les branches distantes
git branch -a

# Créer une PR
gh pr create \
--title "feat: salutations multilingues" \
--body "Ajoute le support pour le français, l'anglais, l'espagnol et l'arabe." \
--base main

Partie 4 : Fork et contribution

# Trouver un dépôt d'exercice à forker
# Utilisez le dépôt d'exercice du cours :
gh repo fork devopsgodhrehouma/git-exercise-tp4 --clone
cd git-exercise-tp4

# Vérifier les remotes
git remote -v

# Ajouter l'upstream
git remote add upstream git@github.com:devopsgodhrehouma/git-exercise-tp4.git
git remote -v
# Créer une branche pour votre contribution
git switch -c fix/votre-nom-amelioration

# Faire une modification (par exemple, ajouter votre nom dans CONTRIBUTORS.md)
echo "- Votre Nom (@votre-github)" >> CONTRIBUTORS.md

git add CONTRIBUTORS.md
git commit -m "docs: ajouter mon nom aux contributeurs"
git push -u origin fix/votre-nom-amelioration

# Créer la PR
gh pr create \
--repo devopsgodhrehouma/git-exercise-tp4 \
--title "docs: ajouter Votre Nom aux contributeurs" \
--body "Ajout de mon nom à la liste des contributeurs."

Partie 5 : Synchroniser votre fork

# Récupérer les changements du dépôt original
git fetch upstream

# Voir ce qui a changé
git log HEAD..upstream/main --oneline

# Mettre à jour votre main local
git switch main
git rebase upstream/main

# Mettre à jour votre fork sur GitHub
git push origin main

# Vérifier que votre fork est à jour
gh repo view --web

Checklist de validation

  • Le projet est visible sur github.com/VOTRE_USERNAME/git-tp4-github
  • git remote -v affiche origin correctement configuré
  • La branche feature/amelioration-salutation est visible sur GitHub
  • Une Pull Request a été créée (même si vous ne pouvez pas la fusionner)
  • Le fork a été synchronisé avec upstream

Résumé

Dans ce TP vous avez pratiqué :

  • La connexion d'un dépôt local à GitHub
  • Le travail avec des branches distantes
  • Le processus complet de fork et contribution
  • La synchronisation avec les dépôts upstream

Vous êtes prêt pour le Module 04 — Collaboration & Pull Requests !