Git Academy

Avancé · 7 min de lecture

Comment Git fonctionne à l'intérieur

Blobs, trees, commits et refs : une fois que tu les vois, plus rien n'est magique dans Git.

Quatre types d'objets

Un blob est le contenu d'un fichier. Un tree est un dossier (noms → blobs et trees). Un commit pointe vers un tree, son ou ses parents, un auteur et un message. Un tag pointe vers un commit. Chacun est identifié par le hash de son contenu.

Sans risque
$ git cat-file -p HEAD
$ git cat-file -p HEAD^{tree}

Les branches ne sont que des fichiers

Une branche est un petit fichier contenant un hash de commit. HEAD indique sur quelle branche tu es. C'est pour ça que créer une branche est instantané.

Sans risque
$ cat .git/HEAD
$ git rev-parse main

Pourquoi presque rien n'est perdu

Les objets ne sont jamais modifiés, seulement ajoutés. Un reset ou une branche supprimée ne fait que déplacer ou retirer un nom ; les objets restent jusqu'au garbage collection, et le reflog se souvient d'où étaient les noms.

Sans risque
$ git reflog
$ git fsck --unreachable