𝗟'𝗶𝗻𝘁𝗲́𝗿𝗶𝗲𝘂𝗿 𝗱𝗲 𝗚𝗶𝘁 : 𝗢𝗯𝗷𝗲𝗰𝘁𝘀 & 𝗛𝗮𝘀𝗵𝗮𝗴𝗲

Git est rapide et fiable grâce à sa manière de stocker les données. Pour maîtriser Git, vous devez comprendre le répertoire .git. Ce dossier caché contient tout ce dont Git a besoin pour suivre votre projet.

Git utilise quatre principaux types d'objets pour gérer votre travail :

  • Blobs : ils stockent le contenu des fichiers.
  • Trees : ils stockent les structures de répertoires et les noms de fichiers.
  • Commits : ils stockent des instantanés de votre projet et des métadonnées.
  • Tags : ils stockent des références à des versions spécifiques.

Git identifie tout grâce au hachage. Il utilise l'algorithme SHA-1 pour transformer les données en un identifiant unique. Cet ID agit comme une empreinte digitale. Si vous modifiez un seul caractère dans un fichier, le hash change complètement.

Comment Git construit un instantané :

Lorsque vous effectuez un commit, Git crée une chaîne d'objets.

  1. Le Blob stocke le texte ou les données réelles de votre fichier.
  2. Le Tree associe ce blob à un nom de fichier et à un chemin de dossier spécifiques.
  3. Le Commit lie l'arbre à un auteur, un horodatage et un message.

Git ne stocke pas les changements ou les « deltas ». Il stocke des instantanés. Chaque fois que vous effectuez un commit, Git crée de nouveaux objets. Cela rend votre historique immuable et facile à récupérer.

Comprendre cette structure vous aide à corriger des erreurs, à récupérer des données perdues et à gérer des branches complexes.

Essayez ce mini-projet pour le voir en action :

  1. Initialisez un dépôt : mkdir git-lab cd git-lab git init

  2. Créez un fichier et trouvez son hash : echo 'Hello Git' > hello.txt git hash-object hello.txt

  3. Stockez le fichier en tant que blob : git hash-object -w hello.txt

  4. Vérifiez le type et le contenu de l'objet : git cat-file -t [YOUR_HASH] git cat-file -p [YOUR_HASH]

  5. Créez un commit et voyez l'arbre : git add hello.txt git commit -m 'Initial commit' git ls-tree HEAD

En regardant sous le capot, vous verrez que Git est bien plus qu'un simple outil de contrôle de version. C'est une base de données hautement organisée d'objets adressés par leur contenu.

Source: https://dev.to/lotanna_obianefo/inside-git-objects-hashing-44gc

Communauté d'apprentissage optionnelle: https://t.me/GyaanSetuAi