Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

TP1re année17 livrablesQuiz corrigé

Git & GitHub : versionner ton portfolio

« J'ai tout cassé et je ne peux plus revenir en arrière. » Plus jamais. Git enregistre l'histoire de ton code ; GitHub la met en sécurité en ligne. Outil n°1 de tout développeur — tu l'apprends sur ton portfolio.

Par Josselyn C., prof de BTS SIO. Publié le , mis à jour le .

Objectif
versionner ton portfolio avec Git (commits, historique) et le sauvegarder en ligne sur GitHub
On manipule
Git en ligne de commande + un compte GitHub, sur ton projet portfolio
Pré-requis
savoir utiliser le terminal et avoir un projet portfolio (HTML/CSS)
Pour qui
SLAM et SISR, 1re année
Durée
environ 3 h

Compétences : C1.4 Travailler en mode projet, C2.2 Assurer la maintenance corrective ou évolutive d'une application

Git est le filet de sécurité du dev : avec lui, on peut tout essayer et toujours revenir en arrière.

Avant de commencer

Pourquoi Git va changer ta vie de dev

Sans Git, sauvegarder = faire des copies portfolio-final, portfolio-final-2, portfolio-VRAIMENT-final… le cauchemar. Avec Git, tu enregistres des versions de ton projet : tu peux voir l'historique, comparer, et revenir à n'importe quel état. Et avec GitHub, tout est sauvegardé en ligne et partageable. C'est l'outil que tous les développeurs utilisent, tous les jours — et un vrai plus pour ton portfolio.

Ce que tu sauras faire à la fin

GesteTu sauras…
Versionnerenregistrer des versions de ton projet (commits)
L'historiquevoir, comparer, revenir à une version
GitHubcréer un dépôt en ligne, t'authentifier et y envoyer ton code
Récupérercloner un dépôt existant, savoir ce que fait pull
Sécuriserne plus jamais perdre ton travail

0. C'est quoi « versionner » ?

Versionner, c'est enregistrer des points de sauvegarde de ton projet au fil du temps. Chaque sauvegarde (un commit) garde l'état complet de tes fichiers à ce moment-là, avec un message qui décrit ce que tu as fait.

MotDéfinition
Gitle logiciel qui gère les versions de ton code (sur ta machine)
Dépôt (repo)un projet suivi par Git
Commitune version enregistrée (un point de sauvegarde)
GitHubun site qui héberge tes dépôts en ligne

Flag A1

Checkpoint

Avec tes mots : qu'est-ce qu'un commit, et pourquoi versionner vaut mieux que faire des copies projet-final-2-bis ?
Rends : ta réponse (2-3 phrases).

0 sur 17 dans cette étape

1. Installer & configurer Git

Étape 1 — Vérifier que Git est là

powershell
git --version
Ce que tu dois voir
git version 2.43.0

Étape 2 — Te présenter à Git (une seule fois)

Git marque chaque commit avec ton nom et ton email. On les règle une fois pour toutes :

powershell
git config --global user.name "Marc Dupont"
git config --global user.email "marc@exemple.fr"

Étape 3 — Relire ce que tu as réglé

powershell
git config --global user.name
git config --global user.email
Ce que tu dois voir
Marc Dupont
marc@exemple.fr

Étape 4 — Régler le nom de branche par défaut (évite un piège courant)

Avant Git 2.28 (sorti juillet 2020), la branche créée par git init s'appelait master. Depuis, Git laisse le choix — mais si le réglage n'est pas fait, il affiche un avertissement à chaque git init. GitHub utilise main par défaut depuis octobre 2020. Pour éviter tout conflit :

powershell
git config --global init.defaultBranch main

Flag B1

Production

Vérifie ta version de Git, puis configure ton nom et ton email.
Rends : ta version de Git et la sortie des deux git config de relecture (Étape 3).

0 sur 17 dans cette étape

2. Initialiser un dépôt

On transforme le dossier de ton portfolio en dépôt Git.

powershell
cd ~/mon-site
git init
Ce que tu dois voir
Initialized empty Git repository in /home/marc/mon-site/.git/

Vérifier que le dossier .git existe

bash
ls -a
Ce que tu dois voir
.  ..  .git  index.html  style.css

Flag B2

Production

Initialise un dépôt Git dans ton dossier portfolio, puis prouve que .git existe.
Rends : la commande, le message de confirmation, et la sortie de ls -a.

0 sur 17 dans cette étape

3. Les 3 zones de Git

Git ne te fait pas passer directement de « j'écris du code » à « c'est enregistré ». Il y a une étape intermédiaire, et c'est le truc qui déroute tous les débutants. Comprends ça maintenant, et tout le reste devient simple.

ZoneC'est…On y va avec
Répertoire de travailtes fichiers, tels que tu les modifies(tu édites)
Zone de transit (staging / index)le « panier » des changements que tu t'apprêtes à enregistrergit add
Dépôt local (.git)l'historique gravé de tes commitsgit commit
Dépôt distant (GitHub)la copie en lignegit push

Vert = on avance (add → commit → push). Violet = on récupère / on revient en arrière (restore, pull).

Vert = on avance (add → commit → push). Violet = on récupère / on revient en arrière (restore, pull).

Flag A2

Checkpoint

Cite les 3 zones côté local (travail, transit, dépôt) et la commande qui fait passer de l'une à l'autre. À quoi sert la zone de transit ?
Rends : ta réponse.

0 sur 17 dans cette étape

4. Le cycle : add → commit

Maintenant que tu connais les zones, enregistrer une version est limpide : on met dans le panier (add), puis on grave (commit).

Étape 1 — Voir ce qui a changé

powershell
git status
Ce que tu dois voir
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        index.html
        style.css

nothing added to commit but untracked files present

Étape 2 — Mettre dans le panier (add)

powershell
git add .

Étape 3 — Vérifier le panier

powershell
git status
Ce que tu dois voir
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   index.html
        new file:   style.css

Étape 4 — Graver (commit)

powershell
git commit -m "Première version de mon portfolio"
Ce que tu dois voir
[main (root-commit) a1b2c3d] Première version de mon portfolio
 2 files changed, 40 insertions(+)

Étape 5 (bonus) — Inspecter le panier avant de graver

Une fois git add fait, tu peux relire une dernière fois ce qui va entrer dans le commit :

powershell
git diff --staged
CommandeCompare quoi avec quoiQuand l'utiliser
git diffrépertoire de travail ↔ panieravant git add : voir ce que j'ai modifié
git diff --stagedpanier ↔ dernier commit (HEAD)après git add : vérifier ce qui va entrer dans le commit
git diff HEADrépertoire de travail + panier ↔ dernier commitvue globale : tout ce qui a changé depuis le commit

Flag B3

Production (ton premier commit)

Fais ton premier commit : git status → git add . → git status → git commit -m "…".
Rends : ton message de commit et la ligne de confirmation (avec l'identifiant du commit).

0 sur 17 dans cette étape

5. Écrire un bon message de commit

Un message de commit, ce n'est pas une formalité : c'est ce que toi dans 3 semaines (ou un recruteur) liras pour comprendre ton historique. Un bon message dit ce que fait le commit, en clair.

MauvaisBon
trucAjoute la section « Projets »
modifCorrige le menu qui débordait sur mobile
fichiersMet en place la palette de couleurs violette
aaaaAjoute mon CV en PDF dans la page contact

Flag B4

Production

Voici 3 mauvais messages : "j'ai changé des trucs", "fix", "page".
Réécris-les en bons messages (impératif, clairs), en imaginant un changement plausible pour chacun.
Rends : tes 3 réécritures.

0 sur 17 dans cette étape

6. L'historique & un 2e commit

Voir l'historique

powershell
git log --oneline
Ce que tu dois voir
a1b2c3d Première version de mon portfolio
powershell
git show a1b2c3d

Variantes utiles de git log

CommandeCe qu'elle afficheQuand l'utiliser
git log --oneline1 commit par ligne (SHA court + message)vue rapide de l'historique
git log --oneline --graphidem + arbre des branches en ASCIIvisualiser les fusions de branches
git log --statchaque commit + liste des fichiers modifiés + nb de lignesmesurer l'ampleur d'un commit
git log -3seulement les 3 derniers commitsse concentrer sur le récent
git log --author="Marc"seulement les commits de cet auteuren projet d'équipe
git show SHAcontenu complet (diff) d'un commit précisinspecter ce qu'a changé un commit

Modifier, puis enregistrer à nouveau

Change quelque chose dans ta page (ajoute une section, une couleur). Avant d'ajouter, regarde ce que tu as modifié :

powershell
git diff
Ce que tu dois voir
diff --git a/index.html b/index.html
@@ -10,6 +10,9 @@
   <h1>Mon portfolio</h1>
+  <section id="projets">
+    <h2>Mes projets</h2>
+  </section>

Puis le cycle habituel :

powershell
git add .
git commit -m "Ajoute la section projets"
Ce que tu dois voir
e4f5g6h Ajoute la section projets
a1b2c3d Première version de mon portfolio

Flag B5

Production

Modifie ta page, regarde le git diff, fais un 2e commit avec un bon message, puis affiche l'historique.
Rends : la sortie de git log --oneline (tes 2 messages doivent apparaître).

0 sur 17 dans cette étape

7. Ignorer des fichiers (.gitignore)

Certains fichiers ne doivent jamais être versionnés : fichiers temporaires du système, dépendances lourdes (réinstallables), et surtout les secrets (mots de passe, clés d'API). On les liste dans un fichier nommé exactement .gitignore, à la racine du dépôt.

Créer le .gitignore

powershell
echo "node_modules/" > .gitignore
echo ".DS_Store" >> .gitignore
echo "*.log" >> .gitignore
echo ".env" >> .gitignore

Que veulent dire ces lignes ?

LigneIgnore…
node_modules/le dossier des dépendances (le / final = c'est un dossier). Énorme et réinstallable avec npm install.
.DS_Storefichier système créé par macOS dans chaque dossier. Inutile et invisible.
*.logtous les fichiers finissant par .log (le * = « n'importe quoi »).
.envle fichier où l'on range les secrets (mots de passe, clés d'API). Jamais sur GitHub.

Syntaxe des patterns .gitignore

PatronEffetExemple
*.logtous les fichiers portant cette extensiondebug.log, error.log
dossier/tout un dossier (et son contenu)node_modules/, bin/
**/*.tmp** = n'importe quelle profondeur de dossiersbuild/cache/x.tmp
!important.log! = exception : ce fichier précis n'est PAS ignoréignorer *.log mais garder important.log
secret.*tous les fichiers nommés secret quelle que soit l'extensionsecret.txt, secret.json
#commentaireligne ignorée (commentaire humain)# Dépendances

Diagnostiquer pourquoi un fichier est ignoré (ou pas)

Situation courante : tu penses avoir ignoré un fichier, mais git status le propose encore — ou l'inverse, un fichier disparaît du suivi sans raison. Pour comprendre quelle règle s'applique :

powershell
git check-ignore -v .env
Ce que tu dois voir
.gitignore:4:.env	.env

Trois niveaux de .gitignore — lequel choisir ?

NiveauFichierPartagé avec l'équipe ?Quand l'utiliser
Projet.gitignore à la racineOui (versionné)Règles propres au projet : node_modules/, *.log, .env
Local seulement.git/info/excludeNon (hors dépôt)Fichiers perso sur ta machine uniquement, sans polluer le .gitignore partagé
Global machine~/.gitignore_globalNon (ta machine)Fichiers liés à ton OS ou éditeur : .DS_Store, Thumbs.db, .idea/, *.swp

Flag A3

Checkpoint

Pourquoi ne veut-on pas versionner un fichier contenant un mot de passe ? Pourquoi le supprimer « après coup » ne suffit pas ? Comment l'empêcher dès le départ ?
Rends : ta réponse.

0 sur 17 dans cette étape

8. C'est quoi GitHub ?

Git vit sur ta machine. GitHub est un site web qui héberge tes dépôts en ligne : une copie de sécurité, accessible partout, et partageable. (Git ≠ GitHub : on peut utiliser Git tout seul, sans jamais aller en ligne. GitHub, c'est juste le coffre-fort distant le plus populaire — il en existe d'autres comme GitLab.)

Git (local) garde ton historique ; GitHub (en ligne) en garde une copie. On envoie avec push, on récupère avec pull.

Git (local) garde ton historique ; GitHub (en ligne) en garde une copie. On envoie avec push, on récupère avec pull.

GitHub vs les alternatives — quand choisir quoi

ForgeHébergementPlan gratuitCI/CD intégréPoint fortQuand choisir
GitHubCloud (Microsoft)Dépôts publics + privés illimités, Actions 2 000 min/moisGitHub ActionsCommunauté open-source n°1, Pages statiques gratuites, CopilotProjet personnel, portfolio, open-source, équipe < 10
GitLabCloud ou self-hostedDépôts illimités, 400 min CI/moisGitLab CI/CD (intégré nativement)DevOps complet dans un seul outil, hébergement privé en entrepriseEntreprise qui veut tout gérer en interne, pipeline CI/CD avancé
BitbucketCloud (Atlassian)5 utilisateurs max, dépôts illimitésBitbucket Pipelines (50 min/mois gratuit)Intégration Jira/Confluence nativeÉquipe qui utilise déjà l'écosystème Atlassian (Jira, Confluence)
Forgejo / GiteaSelf-hosted uniquementGratuit (open-source)Gitea Actions (compatible GitHub Actions)Contrôle total, légèreté (< 100 Mo RAM)Serveur perso ou labo, données confidentielles à ne jamais externaliser

Flag A4

Checkpoint

Quelle est la différence entre Git et GitHub ? Cite 2 avantages d'avoir son code sur GitHub.
Rends : ta réponse.

0 sur 17 dans cette étape

9. S'authentifier sur GitHub

C'est l'étape qui bloque tout le monde, alors on la traite à fond, avant d'essayer de pousser. Depuis 2021, GitHub n'accepte plus ton mot de passe de compte pour envoyer du code. Il faut prouver ton identité autrement. Choisis une des méthodes ci-dessous (la 1 est la plus simple).

Méthode 1 (recommandée) — GitHub CLI

L'outil officiel gh gère l'authentification pour toi, via ton navigateur.

gh auth login
Ce que tu dois voir
! First copy your one-time code: ABCD-1234
Press Enter to open github.com in your browser...
✓ Authentication complete.
✓ Logged in as ton-pseudo

Méthode 2 — Jeton d'accès personnel (PAT)

Un Personal Access Token est un mot de passe spécial, long et généré par GitHub, que tu utilises à la place de ton mot de passe quand Git le demande.

Classic vs Fine-grained — lequel choisir ?

TypeChemin dans GitHubGranularitéExpiration maxQuand l'utiliser
ClassicDeveloper settings → Tokens (classic)Par portée globale (repo, read:org…)1 an (ou « No expiration » déconseillé)Usage simple, projet perso, compatible avec tous les outils
Fine-grainedDeveloper settings → Fine-grained tokensPar dépôt ET par permission précise1 anBesoin de limiter l'accès à un seul dépôt (recommandé en entreprise)

Pour le portfolio, un PAT classic avec la portée repo cochée suffit. Procédure :

  1. Sur github.com : ton avatar → Settings → tout en bas Developer settings.
  2. Personal access tokens → Tokens (classic) → Generate new token (classic).
  3. Donne-lui un nom évocateur (ex. « PC lycée »), une expiration de 90 jours, et coche uniquement la case repo (accès complet aux dépôts privés et publics).
  4. Clique Generate token et copie-le tout de suite (il ne sera plus jamais réaffiché — même GitHub ne le connaît que sous forme hachée).

Mémorisation automatique : le credential helper

Tu ne veux pas retaper ton jeton à chaque push. Git peut le stocker via un credential helper :

OSCommandeOù le jeton est stocké
macOSgit config --global credential.helper osxkeychainTrousseau macOS (chiffré)
Linuxgit config --global credential.helper store~/.git-credentials en clair — suffisant sur un PC perso
Windowsgit config --global credential.helper managerWindows Credential Manager

Méthode 3 — VS Code

Si tu codes dans VS Code : clique sur l'icône compte (en bas à gauche) → Sign in to GitHub. VS Code ouvre le navigateur, tu autorises, et il gère l'authentification de Git automatiquement.

Comparaison des 3 méthodes

MéthodeComplexitéDurée de vieQuand choisir
GitHub CLI (gh auth login)Très simple (navigateur)Permanente sur la machineRecommandé : le plus simple, zéro copier-coller de token
PAT (jeton)Moyen (générer + copier)Expire (30/60/90 jours selon réglage)Si gh n'est pas disponible (serveur, CI/CD)
VS CodeSimple (clic)PermanenteSi VS Code est ton éditeur principal
SSH (clé RSA/ED25519)Plus technique (générer une paire de clés)PermanentePros et serveurs : plus rapide, pas de token à renouveler

Flag D1

Investigation

Mets en place une méthode d'authentification. Explique en 2-3 phrases pourquoi GitHub n'accepte plus le simple mot de passe, et ce qu'est un PAT.
Rends : la méthode choisie + ton explication (ne colle évidemment jamais ton vrai jeton).

0 sur 17 dans cette étape

10. Créer un dépôt GitHub & le relier

Étape 1 — Créer le dépôt en ligne

  1. Sur github.com, clique le + en haut à droite → New repository.
  2. Nom : portfolio. Laisse-le Public.
  3. Ne coche PAS « Add a README », ni .gitignore, ni licence : on a déjà des fichiers en local, et cocher créerait un commit côté GitHub qui entrerait en conflit (voir chapitre 11).
  4. Clique Create repository.

GitHub affiche alors l'adresse du dépôt, du type https://github.com/ton-pseudo/portfolio.git.

Étape 2 — Relier ton dépôt local au dépôt distant

powershell
git remote add origin https://github.com/ton-pseudo/portfolio.git
git branch -M main

Étape 3 — Vérifier le lien

powershell
git remote -v
Ce que tu dois voir
origin  https://github.com/ton-pseudo/portfolio.git (fetch)
origin  https://github.com/ton-pseudo/portfolio.git (push)

Flag B6

Production

Crée le dépôt portfolio sur GitHub et relie-le à ton dépôt local.
Rends : l'URL de ton dépôt et la sortie de git remote -v.

0 sur 17 dans cette étape

11. Envoyer ton code en ligne (push)

powershell
git push -u origin main

Si tu as fait le chapitre 9, l'authentification passe toute seule. Sinon, Git te la demandera ici.

Ce que tu dois voir
Enumerating objects: 4, done.
Writing objects: 100% (4/4), 1.20 KiB, done.
To https://github.com/ton-pseudo/portfolio.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

Recharge la page de ton dépôt sur github.com : tes fichiers y sont !

Flag B7

Production (ton code en ligne)

Pousse ton portfolio sur GitHub.
Rends : l'URL publique de ton dépôt et confirme que tes commits y apparaissent (onglet « commits »).

0 sur 17 dans cette étape

12. Lire ton dépôt sur github.com & le README

Te repérer sur la page du dépôt

Élément de la pageÀ quoi ça sert
Liste des fichierstes fichiers, tels que dans ton dernier commit poussé
Onglet Codela vue principale (fichiers + README affiché dessous)
Lien commits (au-dessus des fichiers)tout ton historique, comme git log mais en visuel
Bouton vert <> Codedonne l'URL à cloner (HTTPS / SSH)
Onglet Settingsréglages du dépôt (renommer, supprimer, visibilité)

Ajouter un README.md

Le README.md est la vitrine de ton dépôt : GitHub l'affiche automatiquement sur la page d'accueil. C'est la première chose qu'un recruteur lit. Il est écrit en Markdown (.md) : un texte simple où quelques symboles donnent la mise en forme.

# Mon Portfolio

Site personnel présentant mon parcours et mes projets BTS SIO.

## Technologies
- HTML5
- CSS3

## Me contacter
[Mon profil GitHub](https://github.com/ton-pseudo)

Crée ce fichier nommé exactement README.md à la racine, puis versionne-le comme le reste :

powershell
git add README.md
git commit -m "Ajoute le README de présentation"
git push

Flag B8

Production

Ajoute un README.md (titre, une description, une liste, un lien), commite-le et pousse-le.
Rends : l'URL du dépôt où l'on voit le README rendu.

0 sur 17 dans cette étape

13. Cloner un dépôt existant

Jusqu'ici tu es parti d'un dossier local. Le cas inverse est tout aussi courant : un dépôt existe déjà en ligne (le tien depuis un autre PC, celui d'un camarade, un projet open-source) et tu veux le récupérer entier sur ta machine. C'est cloner.

powershell
git clone https://github.com/ton-pseudo/portfolio.git
Ce que tu dois voir
Cloning into 'portfolio'...
remote: Enumerating objects: 8, done.
Receiving objects: 100% (8/8), done.

Flag D2

Investigation

Clone un dépôt public de ton choix (par ex. le tien depuis le dossier ~/Téléchargements, ou un petit projet open-source).
Rends : la commande git clone utilisée et la sortie de git log --oneline faite dans le dossier cloné (tu vois l'historique d'un projet que tu n'as pas écrit !).

0 sur 17 dans cette étape

14. Revenir en arrière

Le super-pouvoir de Git : annuler. Tu as cassé ta page ? Reviens à un état qui marchait.

Annuler des modifications non commitées

powershell
git restore index.html

Sortir un fichier du panier (sans perdre tes modifs)

powershell
git restore --staged index.html

Regarder une ancienne version

Avec git log --oneline, tu vois l'identifiant de chaque commit. On peut consulter le code d'un commit précis ou y revenir — on approfondira ce retour en arrière (et les branches) à la séance « Git en équipe ».

git stash — mettre de côté sans commiter

Situation typique : tu bosses sur ta page, tu n'as pas fini (donc pas de commit propre à faire), mais tu dois récupérer le travail d'un camarade avec git pull — et Git refuse car tu as des modifications non commitées. Solution : ranger temporairement tes modifications dans une cachette.

powershell
git stash
Ce que tu dois voir
Saved working directory and index state WIP on main: a1b2c3d Première version

Après avoir fait ta manip (git pull, changé de branche, etc.), tu récupères ce que tu avais rangé :

powershell
git stash pop
Ce que tu dois voir
On branch main
Changes not staged for commit:
        modified:   index.html
Dropped refs/stash@{0}
CommandeEffet
git stashrange les modifications en cours (dossier propre)
git stash listaffiche toutes les entrées rangées (numérotées stash@{0}, stash@{1}…)
git stash poprécupère la plus récente et la supprime de la cachette
git stash dropsupprime la plus récente sans la récupérer

Flag C1

Manipulation

Casse volontairement ta page (supprime des lignes), sans commiter. Vérifie le dégât avec git diff, puis restaure avec git restore.
Rends : ce que tu as cassé, la commande de restauration, et confirme que ta page est revenue intacte.

0 sur 17 dans cette étape

Chapitre 14 bis — Annuler un commit : revert vs reset

Deux commandes permettent d'annuler des commits, mais elles n'ont pas du tout le même effet. Confondre les deux est l'une des erreurs les plus dangereuses en Git professionnel.

git revert — annuler proprement (la méthode sûre)

git revert crée un nouveau commit qui fait l'inverse d'un commit précédent. L'historique reste intact — on ajoute, on n'efface pas.

powershell
git revert a1b2c3d
Ce que tu dois voir
[main f7a9b1c] Revert "Ajoute la section projets"
 1 file changed, 3 deletions(-)

git reset — réécrire l'historique (méthode locale seulement)

git reset déplace HEAD (et ta branche) vers un commit précédent. Il existe 3 modes :

ModeCommandeCommits annulésFichiers modifiésPanier (staging)
--softgit reset --soft HEAD~1ouiconservés dans le paniergardé
--mixed (défaut)git reset HEAD~1ouiconservés dans le répertoirevidé
--hardgit reset --hard HEAD~1ouiperdus définitivementvidé

git reflog — la vraie bouée de sauvetage

Tu as fait git reset --hard et tu réalises que tu avais besoin de ces commits. Pas de panique : Git garde secrètement un journal de tous les déplacements de HEAD, pendant environ 30 jours (valeur de gc.reflogExpire). C'est le reflog.

powershell
git reflog
Ce que tu dois voir
f7a9b1c (HEAD -> main) HEAD@{0}: reset: moving to HEAD~2
e4f5g6h HEAD@{1}: commit: Ajoute la section projets
a1b2c3d HEAD@{2}: commit (initial): Première version de mon portfolio
powershell
git reset --hard e4f5g6h

--force vs --force-with-lease (le push forcé responsable)

Si tu dois absolument forcer un push (cas rare, jamais sur main partagé), préfère la version sécurisée :

CommandeCe qu'elle faitRisque
git push --forceÉcrase GitHub avec ton historique local, sans vérificationÉlimine les commits de tes coéquipiers s'ils ont pushé entre-temps
git push --force-with-leaseMême chose, mais vérifie d'abord que GitHub n'a pas évolué depuis ton dernier fetchBeaucoup plus sûr : refuse si quelqu'un a pushé depuis

Flag A5

Checkpoint

Tu viens de pusher un commit qui introduit un bug. Dois-tu utiliser git revert ou git reset --hard ? Explique pourquoi l'autre option serait dangereuse dans ce contexte.
Rends : ton choix justifié (3-4 phrases).

0 sur 17 dans cette étape

15. Mini-projet : portfolio versionné & en ligne

La mission

  1. Ton portfolio est un dépôt Git (git init + config faite).
  2. Au moins 3 commits avec des messages clairs à l'impératif (ex. « Met en place la base », « Ajoute la section projets », « Applique le thème violet »).
  3. Un .gitignore (même minimal) versionné.
  4. Un README.md de présentation, visible sur la page GitHub.
  5. Le tout poussé sur GitHub, dépôt public, fichiers visibles en ligne.
  6. Tu sais montrer ton historique (git log --oneline) et l'URL de ton dépôt.

Flag B9

Mini-projet (production)

Réalise le tout.
Rends : l'URL de ton dépôt GitHub, la sortie de git log --oneline (≥ 3 commits), et confirme que README + fichiers sont visibles en ligne. C'est une réalisation à mettre dans ton portfolio E5 !

0 sur 17 dans cette étape

Pour finir

Ton antisèche (le cycle Git)

Je veux…Commande
démarrer un dépôtgit init
copier un dépôt en lignegit clone URL
voir l'étatgit status
voir ce qui a changé (non stagé)git diff
voir ce qui est dans le paniergit diff --staged
mettre dans le paniergit add .
enregistrer une versiongit commit -m "message"
voir l'historique compactgit log --oneline
voir l'historique graphiquegit log --oneline --graph
inspecter un commit précisgit show SHA
relier à GitHubgit remote add origin URL
envoyer en lignegit push
récupérer en lignegit pull
annuler des modifs (non commitées)git restore fichier
ranger des modifs sans commitergit stash
récupérer ce qui était rangégit stash pop
annuler un commit (déjà pushé)git revert SHA
enlever un fichier du suivi Gitgit rm --cached fichier
s'authentifier sur GitHubgh auth login

Vérifie tes acquis

Exercice Réussi À revoir

  1. Qu'est-ce qu'un commit ?
  2. Cite les 3 zones locales de Git et la commande qui mène à chacune.
  3. Quelle est la différence entre git add et git commit ?
  4. Quelle est la différence entre Git et GitHub ?
  5. Pourquoi GitHub refuse-t-il ton mot de passe au push, et que faut-il à la place ?
  6. À quoi sert un .gitignore ? Donne un exemple de fichier à y mettre.
  7. Quelle est la différence entre git init et git clone ?
  8. Comment annuler des modifications non commitées ?
  9. Que fait git stash et quand l'utiliser ?
  10. Quelle différence entre git revert et git reset --hard ? Lequel est dangereux après un push ?
Voir le corrigéMasquer le corrigé de l'exercice

1. Un commit = une version enregistrée et datée de ton projet, avec un message et un identifiant SHA unique (40 chars hex).
2. Répertoire de travail (tu édites) → Zone de transit via git add → Dépôt local (.git) via git commit.
3. git add met les fichiers dans le panier (zone de transit). git commit grave définitivement le contenu du panier dans l'historique.
4. Git = logiciel sur ta machine qui gère les versions. GitHub = site web qui héberge tes dépôts en ligne (copie distante).
5. GitHub a supprimé l'auth par mot de passe en 2021 (trop facilement volé). Il faut un PAT (jeton) ou gh auth login ou SSH.
6. .gitignore liste les fichiers que Git doit ignorer : ex. .env (secrets), node_modules/ (lourd, réinstallable), *.log (fichiers temporaires).
7. git init = je démarre un dépôt à partir d'un dossier existant sur ma machine. git clone URL = je copie un dépôt existant depuis GitHub.
8. git restore fichier remet le fichier dans l'état du dernier commit (irréversible pour les modifications non commitées).
9. git stash range temporairement les modifications en cours sans commiter. On les récupère avec git stash pop après avoir fait la manip souhaitée (pull, changement de branche…).
10. git revert crée un nouveau commit qui annule un ancien (sûr, l'historique reste intact). git reset --hard efface des commits et les modifications (dangereux après un push car tu dois forcer un git push --force qui écrase GitHub).

Tu avais trouvé ?

Glossaire

MotDéfinition
Gitlogiciel de gestion de versions (sur ta machine)
GitHubsite qui héberge les dépôts Git en ligne
Dépôt (repo)un projet suivi par Git
Commitune version enregistrée, avec un message et un identifiant
Zone de transit (staging)le panier des changements à enregistrer au prochain commit
addmettre des changements dans le panier (staging)
push / pullenvoyer / récupérer les commits vers/depuis GitHub
clonecopier un dépôt en ligne (fichiers + historique) sur sa machine
PATjeton d'accès personnel : mot de passe spécial pour s'authentifier sur GitHub
.gitignorela liste des fichiers que Git doit ignorer
README.mdfichier Markdown de présentation, affiché sur la page du dépôt
origin / mainle surnom du dépôt distant / la branche principale
HEADpointeur spécial vers le commit courant (« tu es ici »)
SHA / SHA-1identifiant unique d'un commit : 40 caractères hexadécimaux (affiché en 7 dans log --oneline)
git stashrangement temporaire des modifications sans commit
git revertcrée un commit qui annule un commit précédent (sans réécrire l'historique)
git resetdéplace HEAD vers un commit précédent — peut effacer définitivement des modifications
git rm --cachedarrête de suivre un fichier dans Git sans le supprimer du disque
SSHprotocole d'authentification par paire de clés (alternative à HTTPS pour pousser sur GitHub)

TP terminé ?

Coche chaque livrable quand tu l'as : c'est la preuve que l'étape est acquise.

livrables
–
quiz réussi
–
de série
–
Voir tous les TP