Code Opération : OMBRE-ET-VERSIONS-3
OBJECTIFS :
- Lire les traces du passé.
- Revenir en arrière sans laisser d'empreintes.
- Comprendre où pointe le canon.
1. git log – CONSULTER LES ARCHIVES
L’histoire est écrite. Pour la lire :
git log
Une liste descendante. Chaque commit : une empreinte (hash), un auteur, une date, un message.
Trop brut ? Ajoutez des options.
git log --oneline --graph --all
Maintenant c’est une carte. Une vue d’ensemble des branches, des fusions, des chemins pris et abandonnés.
--oneline : juste l'essentiel.
--graph : les lignes de la chronologie.
--all : tout montrer. Même ce qu'on voudrait oublier.
2. git diff – VOIR LES CHANGEMENTS
Entre deux points dans le temps, il y a ce qui a bougé.
Pour voir les différences entre votre working tree et l’index :
git diff
Entre l’index et le dernier commit :
git diff --staged
Entre deux commits :
git diff abc123 def456
C’est un rapport de modifications. Lignes ajoutées (+), supprimées (-).
La vérité, en vert et rouge.
3. git show – EXAMINER UNE CIBLE
Vous voulez tout savoir sur un commit précis ?
git show abc123
Il vous sort le message, l’auteur, la date, et le diff exact de ce qui a changé dans ce commit.
C’est l’autopsie d’un instant passé.
4. git checkout – SE DÉPLACER DANS LE TEMPS
Deux usages.
Pour un fichier :
git checkout abc123 -- fichier.txt
Vous récupérez la version de fichier.txt telle qu'elle était au commit abc123.
Le présent est écrasé. Le passé ressurgit.
Pour un commit (mode détaché HEAD) :
git checkout abc123
Vous vous déplacez à ce point de l’histoire.
Le working tree change. Vous voyez les fichiers tels qu'ils étaient à ce moment-là.
C’est une visite. Pas un déménagement.
Pour revenir : git checkout main (ou master, ou le nom de votre branche).
5. HEAD – LA CIBLE ACTUELLE
HEAD, c'est là où vous êtes.
Un pointeur. Une référence.
En temps normal, HEAD pointe sur une branche (ex: main).
Quand vous checkout un commit directement, HEAD pointe sur le commit. "Détaché".
Vous êtes en observation. Pas en action.
Pour savoir où vous êtes :
git log --oneline -1
Ou regardez le prompt, s'il est configuré pour le montrer.
TRAVAUX PRATIQUES – SCÉNARIO : RETOUR VERS LE PASSÉ
Opération "Chronos"
-
Dans votre dépôt existant, créez un fichier
plan.md. Ajoutez-y trois étapes :1. Infiltration 2. Collecte 3. ExfiltrationCommitez :
git add .puisgit commit -m "Plan initial en trois étapes". -
Modifiez
plan.md. Ajoutez une quatrième étape :4. NettoyageCommitez :
git commit -am "Ajout de l'étape de nettoyage". -
Utilisez
git log --onelinepour voir les deux commits. Notez leurs hash (les 7 premiers caractères suffisent). -
Comparez :
git diff HEAD~1 HEADVous voyez juste l'ajout de "Nettoyage".
-
Remontez dans le temps :
git checkout HEAD~1Vérifiez
plan.md. L'étape 4 a disparu. Vous êtes dans le passé. -
Revenez au présent :
git checkout main -
Maintenant, récupérez uniquement l'ancienne version du fichier, sans bouger :
git checkout HEAD~1 -- plan.mdLe fichier est revenu à l'état précédent, mais vous êtes toujours sur
main.
Commitez cette restauration si besoin.
FIN DU MODULE 3.
Vous savez maintenant lire l’historique, comparer les époques, et vous déplacer sans faire de vagues.
La prochaine fois, on parlera de branches. De chemins parallèles. D'identités multiples.
Rapport clos.