« git log affiche seulement une liste de sauvegardes. »
L’historique est un graphe de commits liés à leurs parents. Chaque commit porte arbre de fichiers, auteur, date, message et relation avec le passé.
01Construis l’historique de référence
./module1-git-foundations.sh run
./module1-git-foundations.sh validate
cd /tmp/soria-git-foundations-$USER/reference
Le dépôt contient quatre commits atomiques et un working tree propre.
02Change de vue sans changer l’historique
git log
git log --oneline --decorate --graph --all
git log --format='%h | %ad | %an | %s' --date=short
git log --stat
Ces commandes lisent les mêmes commits avec des formats différents. –graph deviendra particulièrement utile lorsque plusieurs branches existeront.
03Inspecte un commit
git show HEAD
git show --stat HEAD
git show --name-status HEAD
git show --no-patch --format=fuller HEAD
git show combine métadonnées et patch. Limite la sortie à ce dont tu as besoin pour éviter de masquer l’information importante.
04Compare deux états
git diff HEAD~1 HEAD
git diff --stat HEAD~2 HEAD
git diff HEAD~3 HEAD -- README.md
git diff --name-status HEAD~3..HEAD
Une comparaison porte sur deux états. La notation A..B est souvent utilisée avec log pour les commits accessibles depuis B mais pas A ; avec diff, les deux extrémités désignent les snapshots comparés.
05Filtre par chemin et contenu
git log -- README.md
git log -p -- docs/observations.md
git log -S 'Working tree' --oneline --all
git log -G 'Index|Repository' --oneline --all
-S recherche une variation du nombre d’occurrences d’une chaîne. -G recherche les patches dont les lignes ajoutées ou retirées correspondent à une expression régulière.
06Attribue une ligne avec prudence
git blame README.md
git blame -L 1,12 README.md
git show "$(git blame -L 1,1 --porcelain README.md | head -1)"
git blame indique le dernier commit ayant modifié chaque ligne. Il ne prouve ni l’auteur initial de l’idée, ni la responsabilité d’un défaut.
07Observe les objets internes via Git
git cat-file -t HEAD
git cat-file -p HEAD
git cat-file -p HEAD^{tree}
git count-objects -v
Utilise les commandes de plomberie pour observer commit et tree sans modifier directement le contenu de .git/objects.
08Produis une preuve de lecture
git log --reverse --format='%h %s'
git diff --check HEAD~3 HEAD
git status --porcelain
Le rapport doit expliquer les quatre intentions dans l’ordre, les fichiers modifiés par chacune et l’état final propre.
Raconte l’histoire du dépôt
À partir du repository de référence, produis une chronologie des quatre commits. Pour chaque commit, donne hash court, intention, fichiers concernés, patch essentiel et commande utilisée pour vérifier l’information.
✓Lot 1 terminé
Tu sais distinguer Git et GitHub, préparer un dépôt, sélectionner l’index, créer des commits atomiques et lire précisément l’historique obtenu.