Session 13 : GitHub : ton code en ligne, pour tout le monde

Jusqu’ici, tout ton code vit sur ton laptop. Pratique pour toi, mais personne d’autre n’y a accès. Et si ton laptop plante, tu perds tout.

GitHub est un site web où tu mets tes dépôts Git en ligne. C’est une sauvegarde, un portfolio et une plateforme de collaboration en un seul. Aujourd’hui, tu mets ton code sur GitHub. À la fin de cette session, n’importe qui avec une connexion internet peut voir tes projets, et toi ceux des autres.

C’est quoi GitHub ?

GitHub, ce n’est pas la même chose que Git. Git est le système de gestion de versions qui tourne sur ton ordinateur. GitHub est un site web (github.com) qui héberge des dépôts Git : une sorte de Google Drive pour le code, mais avec Git en dessous.

Ce que GitHub ajoute à Git :

  • Une sauvegarde dans le cloud. Ton code n’est pas seulement en local. Laptop cassé ? Ton code survit.
  • La collaboration. Plusieurs personnes peuvent travailler sur le même repo. GitHub gère qui a le droit de faire quoi.
  • Les pull requests. Tu demandes la permission de mettre tes modifications dans le projet de quelqu’un, avec discussion et review.
  • Les issues. Signaler des bugs, proposer des features, suivre des tâches : tout se passe dans ton repo.
  • Le portfolio. Ton profil GitHub, c’est ta carte de visite. Les employeurs le regardent.

GitHub n’est pas la seule option ; il y a des alternatives comme GitLab et Bitbucket. Mais GitHub est le plus grand, avec plus de 100 millions d’utilisateurs. Dans ces sessions, on utilise GitHub.

Étape 0 : Créer un compte GitHub

  1. Ouvre github.com dans ton navigateur.
  2. Clique sur Sign up.
  3. Remplis ton adresse e-mail. Utilise la même adresse que celle que tu as configurée dans git config à la session 11 : ça évite des soucis.
  4. Choisis un username. C’est ton identité sur GitHub. Choisis quelque chose que tu trouveras encore chouette dans 5 ans. Tu peux changer ton username plus tard, mais les anciens liens vers ton profil ne marcheront alors plus.
  5. Vérifie ton compte via l’e-mail que GitHub envoie.
  6. Choisis l’abonnement Free. Tout ce dont tu as besoin est gratuit : repos publics et privés illimités.

Astuce pour les coaches : vérifie que les ninjas ont accès à leur e-mail pendant la session. Certains laptops ne sont pas connectés au webmail. Prépare un plan B : si la vérification par e-mail ne marche pas, les ninjas peuvent vérifier leur compte GitHub plus tard à la maison. Le reste de la session marche aussi sans vérification.

Étape 1 : Ton premier dépôt sur GitHub

Tu as un projet local sur ton ordinateur (de la session 11). Tu vas le mettre en ligne.

Sur GitHub, clique en haut à droite sur l’icône + → New repository.

Remplis :

ChampCe que tu remplis
Repository namemijn-eerste-git-project (le même que ton dossier local)
Description“Mon premier projet Git (CoderDojo session 11)”
Public / PrivateChoisis Public : les autres peuvent voir ton code
Initialize with READMENE coche PAS : tu as déjà un projet local

Clique sur Create repository.

GitHub affiche maintenant des instructions. Choisis le bloc sous "…or push an existing repository from the command line". Copie ces trois commandes : tu en auras besoin tout de suite.

Étape 2 : Relier ton dépôt local à GitHub

Dans ton terminal (dans ton dossier de projet) :

git remote add origin https://github.com/JOUW_USERNAME/mijn-eerste-git-project.git

Que se passe-t-il ici ? remote est un endroit externe où ton repo se trouve aussi. origin est le nom que tu donnes à cet endroit. « origin » est le nom par défaut de ta remote principale. Tu peux avoir plusieurs remotes (par exemple origin pour GitHub, backup pour GitLab), mais une seule suffit la plupart du temps.

Vérifie que ça a marché :

git remote -v

Tu vois :

origin  https://github.com/JOUW_USERNAME/mijn-eerste-git-project.git (fetch)
origin  https://github.com/JOUW_USERNAME/mijn-eerste-git-project.git (push)

fetch = c’est de là que tu récupères du code. push = c’est là que tu envoies ton code. La plupart du temps, c’est le même endroit.

Étape 3 : Mettre ton code en ligne avec git push

Voilà le moment : envoyer tes commits locaux vers GitHub.

git push -u origin master

push = envoie mes commits vers la remote. -u origin master = « retiens que master sur mon ordinateur correspond à master sur origin. » La prochaine fois, tu peux juste taper git push, parce que Git se souvient du lien.

GitHub demande de te connecter. Deux possibilités :

  1. Via le navigateur : GitHub ouvre une fenêtre de navigateur, tu cliques sur « Authorize ». C’est fait.
  2. Avec un Personal Access Token : crée-le via GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic). Donne un nom au token, coche repo, copie le token, et colle-le comme mot de passe dans le terminal.

Pour les ninjas : la méthode 1 (navigateur) est la plus simple. Si ça ne marche pas, aide-les avec un token.

Après un push réussi, rafraîchis ta page GitHub. Tes fichiers sont là ! Ton hallo.py, ton historique de commits : tout.

Étape 4 : Pusher des modifications

Fais une modification en local :

echo 'print("GitHub is cool!")' >> hallo.py
git add hallo.py
git commit -m "Add GitHub enthusiasm"

Pushe vers GitHub :

git push

Tu n’as plus besoin de -u origin master, parce que Git connaît le chemin. Rafraîchis GitHub : ton nouveau commit est là.

Étape 5 : Démarrer un nouveau projet via GitHub

C’est la route inverse : tu commences sur GitHub et tu le ramènes sur ton ordinateur.

Sur GitHub : New repository. Appelle-le python-spelletje. Cette fois, coche bien Add a README file ; GitHub crée alors un repo avec un fichier dedans. Clique sur Create repository.

Maintenant tu ramènes ce repo sur ton ordinateur. Ça s’appelle cloner :

cd ~   # va dans ton dossier home
git clone https://github.com/JOUW_USERNAME/python-spelletje.git

GitHub crée un dossier python-spelletje avec le README dedans. Et c’est tout de suite un dépôt Git complet : le dossier .git est déjà là. Tu ne dois pas faire de git init.

cd python-spelletje
git log --oneline   # tu vois le premier commit que GitHub a fait pour toi

Maintenant tu peux continuer à travailler ici en local et pusher tes commits vers GitHub, exactement comme aux étapes 3 à 4.

Étape 6 : Et si quelqu’un d’autre fait aussi des modifications ?

Imagine : tu as travaillé à python-spelletje à la maison et tu as pushé. Maintenant tu es au dojo avec un laptop et tu veux continuer. Tu n’as pas encore la dernière version.

git pull

git pull récupère les derniers commits de GitHub sur ton ordinateur. C’est deux actions en une : git fetch (récupérer) + git merge (fusionner avec ton code local).

Fais toujours git pull avant de commencer à travailler, sinon tu prends du retard et tu récoltes des merge conflicts.

Résumé du workflow :

CommandeCe qu’elle fait
git pullRécupérer la dernière version depuis GitHub
Travailler à ton code, faire des commits (git add, git commit)
git pushEnvoyer tes commits vers GitHub

Retiens : pull avant de commencer, push quand tu as fini.

Showcase

Montre à un coach et à un buddy :

  1. Ton profil GitHub avec au moins un dépôt.
  2. L’historique de commits de ton repo sur GitHub (clique sur “X commits” au-dessus de la liste des fichiers).
  3. Un git push tout frais qui vient d’arriver sur GitHub.

À la prochaine !

« Maintenant ton code est en ligne. Mais qu’est-ce que tu mets dans un commit message ? Comment écrire un message qui sera encore clair dans trois mois ? Et comment travailler avec une équipe sans tout casser ? La prochaine fois : le côté professionnel de Git : les best practices que tous les développeurs utilisent. »

À emporter chez toi

  1. Facile : pushe un projet local existant vers un nouveau dépôt GitHub.
  2. Moyen : fais 3 commits en local, pushe-les, et vérifie sur GitHub qu’ils sont tous visibles.
  3. Difficile : clone un repo de GitHub, fais une modification, committe et pushe.
  4. Très difficile : simule un travail sur deux ordinateurs : clone un repo, fais un commit et pushe. Va dans un autre dossier, clone le même repo encore une fois (comme si c’était un autre ordinateur), fais un autre commit, et essaie de pusher. Que se passe-t-il ? Résous-le avec git pull.