Le graphe d'historique : parent, hash et le DAG
La leçon précédente, on a vu que chaque commit est un instantané (snapshot) — une image complète du projet. Maintenant, on se demande : comment ces images sont-elles reliées entre elles ? Chaque commit porte un petit « mot » qui pointe vers le commit venu avant lui — son parent. Enchaîner ces mots f
Chaque image (commit) porte un mot : « je suis venue juste après cette image-là ». Ces mots enchaînent les images en une carte à sens unique. Et chaque image a une empreinte unique — change quoi que ce soit, et l'empreinte change.
- Parent
- Le pointeur d'un commit vers le commit qui l'a précédé. C'est l'enchaînement des pointeurs parents qui forme l'historique.
- DAG (graphe orienté acyclique)
- La forme de l'historique Git : chaque commit pointe vers son parent, et cet enchaînement forme un graphe qui coule dans un seul sens, sans cycles.
- Hash (identifiant SHA)
- Une empreinte unique de longueur fixe, dérivée du contenu du commit (y compris son parent). Change ne serait-ce qu'un caractère, et le hash change.
- Commit racine
- Le premier commit d'un dépôt. C'est le seul qui n'a pas de parent — le point de départ du graphe.
- Métadonnées
- Les informations associées à un commit : qui l'a écrit, quand, et le message. Elles aussi entrent dans le calcul du hash.