Un groupe découvre un outil de versionnage
Exercice supplémentaire · niveau 2 · NSI (première), chapitre 11 — Conduire un projet · Versionner, outiller
Énoncé
Un groupe découvre un outil de versionnage. Dérouler cette séance en disant, après chaque ligne, ce que contient le dépôt.
git init
git add jeu.py
git commit -m "premier jet"
(on ajoute une ligne dans jeu.py)
git status
git commit -m "ajout de l'affichage"
git log --oneline
git add jeu.py
git commit -m "ajout de l'affichage"
git log --oneline
Une des lignes ne fait pas ce que le groupe croit. Laquelle, et pourquoi ?
Corrigé
| L. | Commande | État du dépôt après |
|---|---|---|
| 1 | `git init` | dépôt vide, aucun enregistrement |
| 2 | `git add` | `jeu.py` est préparé, mais rien n'est enregistré |
| 3 | `git commit` | 1 enregistrement, contenant `jeu.py` |
| 4 | (modification) | le fichier du disque diffère du dernier enregistrement |
| 5 | `git status` | signale `modified: jeu.py`, non préparé |
| 6 | `git commit` | rien ne se passe : « no changes added to commit » |
| 7 | `git log` | toujours 1 enregistrement |
| 8 | `git add` | la modification est préparée |
| 9 | `git commit` | 2 enregistrements |
| 10 | `git log` | les deux, du plus récent au plus ancien |
La ligne 6 est celle qui trompe. Le groupe croit avoir enregistré son travail ; il n'a rien enregistré du tout. La commande n'échoue pas bruyamment — elle affiche un message parfaitement clair que personne ne lit, parce qu'on attendait un succès.
Pourquoi deux étapes ? Parce que add et commit répondent à deux questions différentes : « quoi enregistrer ? » et « enregistrer, avec quel message ? ». Cette séparation permet de n'enregistrer qu'une partie de son travail — les corrections de regles.py maintenant, les essais de affichage.py plus tard. C'est utile, et c'est aussi le piège du débutant.
Contrôle après la ligne 10 : deux enregistrements, deux messages. S'il n'y en a qu'un, c'est que la ligne 8 a été sautée.
Le raccourci et son danger : git commit -a -m "..." prépare et enregistre en une fois tous les fichiers déjà suivis. Il évite l'oubli de la ligne 6, mais il enregistre aussi ce qu'on n'avait pas l'intention d'enregistrer. Comme toujours, le raccourci supprime une erreur et en autorise une autre.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.