Exercice 04 : Synchroniser avec GitHub
🎯 Objectifs
À la fin de cet exercice, vous serez capable de :
- ✅ Créer un compte GitHub
- ✅ Configurer l'authentification SSH
- ✅ Créer un repository distant
- ✅ Connecter un repository local à GitHub
- ✅ Pousser (
push) et tirer (pull) du code - ✅ Cloner un repository
Durée estimée : 30 minutes
Difficulté : ⭐⭐☆☆☆ (Débutant+)
Prérequis :
- Avoir complété Exercice 01, 02, 03
- Connexion Internet
- Accès à Git sur votre ordinateur
📖 Contexte
Jusqu'à présent, vous avez travaillé localement. Maintenant, vous allez :
- Héberger votre code - Sur un serveur (GitHub) pour le conserver
- Collaborer - Partager le code avec d'autres
- Sauvegarder - Avoir une copie ailleurs qu'sur votre ordinateur
- Utiliser les remotes - Concepts clés de Git décentralisé
GitHub est la plateforme la plus populaire (acquise par Microsoft en 2018).
📋 Énoncé
Vous allez :
- Créer un compte GitHub (si nécessaire)
- Configurer SSH pour l'authentification
- Créer un nouveau repository sur GitHub
- Connecter votre repository local à GitHub (remote)
- Pousser votre code local vers GitHub
- Cloner le repository sur une autre destination
- Synchroniser les changements
Résultat attendu :
- Repository visible sur GitHub.com
- Code poussé avec tous les commits
- Capable de cloner et synchroniser
🔧 Matériel Nécessaire
- GitHub : Compte gratuit (créer si nécessaire)
- Git : Installé localement
- SSH : Clés génér ées (nous le ferons)
- Repository local : celui des exercices 1-3
- Internet
- Temps : 45 minutes
🧭 Déroulement de l'exercice
Voici les grandes étapes à réaliser dans l'ordre. Chaque étape décrit ce que vous devez accomplir - à vous de trouver la commande. La solution complète est disponible si vous êtes bloqué.
Tâche 1 : Créer un compte GitHub
Rendez-vous sur github.com et créez un compte gratuit (ou connectez-vous si vous en avez déjà un).
Indice : Le compte gratuit donne accès à des repositories publics et privés illimités. Choisissez un nom d'utilisateur professionnel.
Vérification : Vous devez voir votre dashboard GitHub avec votre nom d'utilisateur en haut à droite.
Tâche 2 : Générer une clé SSH
Vérifiez si vous avez déjà des clés SSH. Si non, générez-en une paire. La clé privée reste sur votre machine, la clé publique sera partagée avec GitHub.
Indice : Les clés SSH sont stockées dans
~/.ssh/. La commande de génération estssh-keygen. Utilisez le typersaoued25519(plus moderne).
Question à se poser : Quelle est la différence fondamentale entre la clé privée et la clé publique ? Laquelle ne faut-il JAMAIS partager ?
Vérification : Deux fichiers doivent exister dans ~/.ssh/ - l'un sans extension (privé) et l'un avec .pub (public).
Tâche 3 : Ajouter la clé publique à GitHub
Copiez le contenu de votre clé publique et ajoutez-la dans les paramètres SSH de votre compte GitHub.
Indice : Dans GitHub : Settings > SSH and GPG keys > New SSH key. Copiez le contenu du fichier
.pub(pas le fichier privé !).
Vérification : Testez la connexion SSH avec la commande recommandée par GitHub. Vous devez voir un message de bienvenue avec votre nom d'utilisateur.
Tâche 4 : Créer un repository sur GitHub et le connecter localement
Créez un nouveau repository vide sur GitHub, puis connectez votre repository local à ce remote.
Indice :
originest le nom conventionnel pour désigner le repository distant principal. La commande qui connecte un remote s'appellegit remote add.
Vérification : git remote -v doit afficher l'URL de votre repository GitHub.
Tâche 5 : Pousser votre code
Envoyez tous vos commits locaux vers GitHub.
Indice : Le premier push d'une branche nécessite de préciser la destination distante (
--set-upstreamou-u). Les pushes suivants seront plus simples.
Vérification : Rafraîchissez la page de votre repository sur GitHub - vous devez voir vos fichiers et votre historique de commits.
Tâche 6 : Cloner le repository
Clonez votre repository dans un nouveau dossier pour simuler un autre développeur qui récupère le projet.
Indice :
git clone URL destinationcrée une copie locale complète avec tout l'historique et le remote déjà configuré.
Vérification : Le clone doit avoir exactement le même git log --oneline que votre repository original.
� Mini-Projet : Publier un portfolio DevOps
Vous allez créer et publier un repository "portfolio" sur GitHub qui présente vos compétences DevOps en cours d'acquisition.
Scénario : Vous créez un repository public devops-portfolio sur GitHub pour documenter votre progression.
Ce que vous devez réaliser :
- Créez un nouveau repository public
devops-portfoliosur GitHub (sans initialisation automatique) - En local, créez le dossier
devops-portfolio/et initialisez-le avec Git - Créez un
README.mdstructuré avec : votre nom, les technologies apprises, et un lien fictif vers un projet - Faites un premier commit
- Connectez le repository local au remote GitHub
- Poussez sur
mainavec la configuration du upstream - Vérifiez sur GitHub que le README est bien affiché
- Ajoutez une ligne "En cours d'apprentissage : Docker" dans le README et faites un second commit
- Poussez le second commit
- Clonez le repository dans un dossier
devops-portfolio-backuppour simuler une récupération
Checkpoints de validation :
- Le repository est visible sur
github.com/VOTRE_USERNAME/devops-portfolio - La page du repository affiche votre README formaté
git log --onelinedans le clone affiche les mêmes 2 commits qu'en localgit remote -vdans les deux dossiers (local et clone) pointe vers GitHub- La connexion SSH fonctionne (
ssh -T git@github.comrenvoie votre nom d'utilisateur) - Aucun push n'a nécessité un mot de passe (authentification SSH)
�📚 Étapes Détaillées
Étape 1 : Créer un Compte GitHub (si nécessaire)
Objectif : Avoir un compte pour héberger le code
Instructions:
- Aller sur github.com
- Si vous n'avez pas de compte :
- Cliquer "Sign up"
- Entrer email, mot de passe, username
- Vérifier l'email
- Accepter les conditions
- Se connecter à votre compte
Résultat attendu :
- Dashboard GitHub visible
- Vous voyez "Welcome to GitHub"
Étape 2 : Générer une Clé SSH (Authentification)
Objectif : Créer une clé pour communiquer de manière sécurisée avec GitHub
Instructions:
- Ouvrir un terminal
- Vérifier si vous avez déjà des clés SSH :
ls ~/.sshRésultat possible :
id_rsa id_rsa.pub
known_hostsSi id_rsa existe, continuer à l'Étape 3.
- Si pas de clés : Les générer :
ssh-keygen -t rsa -b 4096 -C "votre@email.com"- Appuyer sur Enter pour toutes les questions (garder les valeurs par défaut) :
Enter file in which to save the key (/home/user/.ssh/id_rsa): [Enter]
Enter passphrase (empty for no passphrase): [Enter]
Enter same passphrase again: [Enter]Résultat attendu :
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pubÉtape 3 : Ajouter la Clé SSH à GitHub
Objectif : Dire à GitHub d'accepter votre clé SSH
Instructions:
- Copier votre clé publique :
cat ~/.ssh/id_rsa.pubRésultat attendu (une longue chaîne) :
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDx... votre@email.com- Copier toute cette chaîne (Ctrl+C / Cmd+C)
- Sur GitHub, aller à Settings → SSH and GPG keys
- Cliquer New SSH key
- Title : Mettre quelque chose comme "My Laptop"
- Key : Coller la clé publique (Ctrl+V / Cmd+V)
- Cliquer Add SSH key
Résultat attendu :
- GitHub accepte la clé
- La clé apparaît dans la liste
Étape 4 : Configurer Name et Email Global (Rappel)
Objectif : S'assurer que Git sait qui vous êtes
Instructions:
git config --global user.name "Votre Nom"
git config --global user.email "votre@email.com"Vérifier :
git config --global user.name
git config --global user.emailÉtape 5 : Créer un Repository sur GitHub
Objectif : Créer l'endroit distant où héberger votre code
Instructions:
- Sur GitHub, cliquer New (en haut à gauche, dans la barre)
- Remplir le formulaire :
- Repository name :
ma-premiere-app(même nom qu'en local) - Description : "Mon premier projet Git" (optionnel)
- Public/Private : Private (recommandé, voir ci-dessous)
- Initialize repository : Ne PAS cocher (nous avons déjà un repo local)
🔒 Public vs Private - quelle différence ?
| Public | Private | |
|---|---|---|
| Visible par tout le monde | ✅ Oui | ❌ Non |
| Accessible sans compte GitHub | ✅ Oui | ❌ Non |
| Idéal pour | Open source, portfolio | Projets perso, code sensible |
| Gratuit | ✅ Oui | ✅ Oui |
Choisissez Private pour cet exercice : votre code ne sera visible que par vous (et les collaborateurs que vous invitez explicitement). Vous pourrez toujours le rendre public plus tard depuis les paramètres du repo.
- Cliquer Create repository
Résultat attendu :
- Vous êtes redirigé vers votre nouveau repo
- Page avec des instructions (en blue)
- URL SSH visible :
git@github.com:username/ma-premiere-app.git
Étape 6 : Ajouter le Remote
Objectif : Connecter votre repository local à GitHub
Instructions:
- Copier l'URL SSH de votre nouveau repo GitHub (en haut de la page, bouton vert "Code")
Doit ressembler à :
git@github.com:username/ma-premiere-app.git- Dans votre terminal local (dans le dossier
ma-premiere-app), initialisez le repo si ce n'est pas déjà fait :
git init
git branch -M main- Puis ajoutez le remote :
git remote add origin git@github.com:USERNAME/ma-premiere-app.gitRemplacer USERNAME par votre username GitHub.
- Vérifier le remote :
git remote -vRésultat attendu :
origin git@github.com:username/ma-premiere-app.git (fetch)
origin git@github.com:username/ma-premiere-app.git (push)Explication :
origin= nom du remotefetch= pour récupérerpush= pour envoyer
Étape 7 : Pousser le Code vers GitHub
Objectif : Envoyer tous vos commits locaux vers GitHub
Instructions:
- Vérifier que vous avez des commits :
git log --oneline -3- Pousser la branche
mainversorigin:
git push origin mainRésultat attendu (première fois) :
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 8 threads
Compressing objects: 100% (8/8), done.
Writing objects: 100% (10/10), 2.34 KiB | 2.34 MiB/s, done.
Total 10 (delta 2), reused 0 (delta 0), reused 1 (delta 0)
remote: Resolving deltas: 100% (2/2), done.
To github.com:username/ma-premiere-app.git
* [new branch] main -> mainExplication :
- Git a compressé et envoyé vos commits
[new branch]= première fois que main est poussée
- Vérifier sur GitHub.com :
- Rafraîchir la page
- Vous devriez voir vos fichiers (README.md, main.py, etc.)
- Voir l'historique des commits
Étape 8 : Faire un Local Change et le Pousser
Objectif : Pratiquer la séquence normale : modifier → committer → pousser
Instructions:
- Modifier un fichier localement :
echo "
## Documentation Complète
Voir le fichier INSTALL.md pour les détails.
" >> README.md- Ajouter et committer :
git add README.md
git commit -m "Ajouter note de documentation au README"- Pousser le changement :
git push origin mainRésultat attendu :
Updating 1f9c3a4..6a2b5c8
Fast-forward
README.md | 4 +++
1 file changed, 4 insertions(+)- Vérifier sur GitHub.com :
- Vous devriez voir le README modifié
- Le commit devrait être visible
Étape 9 : Cloner le Repository
Objectif : Simuler quelqu'un d'autre qui récupère votre code
Instructions:
- Créer un dossier de test :
cd /tmp #(ou C:\Users\YouName\AppData\Local\Temp sur Windows)- Cloner votre repository depuis GitHub :
git clone git@github.com:USERNAME/ma-premiere-app.git ma-premiere-app-cloneRésultat attendu :
Cloning into 'ma-premiere-app-clone'...
remote: Enumerating objects: ...
Receiving objects: 100% (12/12), done.- Entrer dans le dossier :
cd ma-premiere-app-clone- Vérifier les fichiers :
ls -laRésultat attendu : Tous vos fichiers sont là (README.md, main.py, CONTRIBUTING.md, etc.)
- Vérifier l'historique :
git log --oneline -5Résultat attendu : Tous vos commits sont présents
Étape 10 : Simuler la Collaboration
Objectif : Pratiquer push/pull avec plusieurs endroits
Instructions:
- Dans le clone, faire un changement :
echo "# Configuration de Développement" > DEV.md
git add DEV.md
git commit -m "Ajouter guide de développement"
git push origin mainRésultat attendu :
remote: Create a pull request for ...
To github.com:username/ma-premiere-app.git
6a2b5c8..7c3f1e9 main -> main- Dans le dossier original (ma-premiere-app), récupérer les changements :
cd ../ma-premiere-app # Revenir au dossier original
git pull origin mainRésultat attendu :
From github.com:username/ma-premiere-app
* branch main -> FETCH_HEAD
Updating 6a2b5c8..7c3f1e9
Fast-forward
DEV.md | 1 +
1 file changed, 1 insertion(+)- Vérifier que DEV.md est maintenant dans le dossier original :
ls -la
cat DEV.mdC'est la collaboration ! 🎉
✅ Vérification du Résultat
Pour vérifier que vous avez réussi :
# Vérifier le remote
git remote -v # Doit montrer 'origin'
# Vérifier que GitHub a le code
# Aller sur github.com/USERNAME/ma-premiere-app
# Vérifier le clone
cd ../ma-premiere-app-clone
git remote -v # Doit montrer 'origin'
ls -la # Tous les fichiers présents
git log --oneline | head -5 # Historique présentChecklist finale :
- ✅ Compte GitHub créé/accessible
- ✅ Clé SSH configurée
- ✅ Repository créé sur GitHub
- ✅ Remote 'origin' connecté
- ✅ Code poussé avec
git push - ✅ Repository cloné avec succès
- ✅ Synchronisation push/pull fonctionne
🎮 Défi Bonus
Défi 1 : Créer ensuite une Pull Request
# Créer une branche
git checkout -b feature/github-ci
# Faire un changement
echo "# Tests Automatiques" > CI.md
git add CI.md
git commit -m "Ajouter documentation CI"
# Pousser la branche
git push origin feature/github-ci
# Allez sur GitHub et créez une Pull Request
# (bouton "Compare & pull request")Défi 2 : Ajouter un fichier .gitignore
echo "
__pycache__/
*.pyc
.env
node_modules/
.DS_Store
" > .gitignore
git add .gitignore
git commit -m "Ajouter .gitignore complet"
git push origin mainDéfi 3 : Voir l'historique sur GitHub
# Sur GitHub.com, cliquer "Commits"
# Vous verrez tous les commits avec auteur et date
# Cliquer sur un commit pour voir les changements détaillés💡 Points Clés à Retenir
- SSH : Authentification sécurisée sans mot de passe à chaque fois
- Remote : Serveur distant (GitHub) où stocker le code
- Origin : Nom conventionnel du serveur principal
- Push : Envoyer les changements locaux au serveur
- Pull : Récupérer les changements du serveur
🎯 Prochaines Étapes
- ✅ Vous savez synchroniser avec GitHub
- 🔜 Exercice suivant : Collaboration en équipe
- 🚀 Index des exercices : Tous les exercices
Bravo ! Vous êtes maintenant sur GitHub ! 🚀