Comprendre les éléments internes de GIT : le répertoire .git

Git est l'un des outils de contrôle de version les plus populaires et les plus puissants disponibles pour les développeurs. Il permet aux équipes de collaborer sur des projets logiciels en conservant un historique complet de toutes les modifications apportées au code. Un élément fondamental de Git est le répertoire .git, qui stocke toutes les informations nécessaires au versioning de votre projet. Dans cet article, nous allons plonger dans les détails de ce répertoire et comprendre comment Git fonctionne en interne.

Qu'est-ce que le répertoire .git ?

Lorsque vous initialisez un nouveau dépôt Git avec la commande git init, Git crée un répertoire caché appelé .git à la racine de votre projet. Ce répertoire contient tous les fichiers et répertoires que Git utilise pour suivre les modifications apportées à votre projet. C'est le cœur de votre dépôt Git et contient la base de données d'objets, de références, de hooks, de configurations, etc.

Structure du répertoire .git

La structure interne du répertoire .git est composée de plusieurs sous-répertoires et fichiers. Voici les principaux composants :

  • objets/ : stocke tous les objets dans la base de données Git, qui incluent les blobs (contenu des fichiers), les arborescences (structure des répertoires) et les commits.
  • refs/ : contient des références à des objets, tels que des branches et des balises.
  • HEAD : un fichier qui pointe vers la branche ou le commit actuellement actif.
  • config : fichier de configuration du référentiel local, qui peut inclure des paramètres spécifiques au projet.
  • hooks/ : répertoire contenant des scripts de hook qui peuvent être exécutés à différents moments du flux de travail Git.
  • info/ - Contient le fichier exclude, qui est comme un .gitignore local pour le référentiel.
  • index : un fichier binaire contenant des informations sur le prochain commit (zone de transit).

Comment Git stocke les informations

Git est un système de contrôle de version distribué qui stocke les informations dans un format appelé Directed Acyclic Graph (DAG). Chaque commit dans Git est un nœud dans ce graphique, qui pointe vers les commits parents (le cas échéant) et vers un objet arborescent qui représente l'état du répertoire de travail à ce moment-là.

Objets Git

Les objets Git sont stockés dans le répertoire objects/ et constituent la base du stockage Git. Il existe trois principaux types d'objets :

  • Blobs : représente le contenu d'un fichier dans le référentiel Git.
  • Arbres : représentent la structure des répertoires et pointent vers des blobs et/ou d'autres arbres.
  • Commits : contiennent des métadonnées telles que l'auteur, le message de validation et pointent vers un objet d'arborescence spécifique.

Ces objets sont identifiés par un hachage SHA-1, unique pour chaque objet. Ce hachage est une représentation de 40 caractères du contenu de l'objet et c'est ce que Git utilise pour suivre les modifications.

Références

Les références sont des pointeurs vers des commits et sont stockées dans le répertoire refs/. Les références les plus courantes sont les branches et les balises. Chaque branche est simplement un fichier dans refs/heads/ qui contient le SHA-1 du commit en haut de cette branche. Les balises sont stockées de la même manière dans refs/tags/.

TÊTE et paiement

Le fichier HEAD est une référence à la branche actuelle. Lorsque vous effectuez une extraction vers une branche, Git met à jour le fichier HEAD pour qu'il pointe vers la nouvelle référence de branche. C'est ce qui permet à Git de savoir sur quel commit vous travaillez actuellement.

Index et zone de transit

Le fichier index est une représentation binaire de la zone de préparation, où les modifications sont préparées avant d'être validées. Lorsque vous exécutez la commande git add, Git met à jour l'index avec des informations sur les nouveaux fichiers ou les modifications apportées aux fichiers existants.

Paramètres et crochets

Le fichier config contient des paramètres spécifiques au référentiel, tandis que le répertoire hooks/ peut contenir des scripts personnalisés qui s'exécutent en réponse à des événements spécifiques dans le cycle de vie de Git, comme avant un commit ou avant un push.

Explorer .git

Pour vraiment comprendre comment Git fonctionne en interne, vous pouvez explorer le répertoire .git de votre projet. Des commandes comme git cat-file et git ls-tree vous permettent d'inspecter les objets et les arborescences. Cependant, il est important de noter que la modification directe des fichiers dans le répertoire .git peut corrompre votre référentiel, donc cet exploitCela doit être fait avec soin.

Conclusion

Le répertoire .git est un composant essentiel de Git, stockant toutes les informations nécessaires au versioning de votre projet. Comprendre sa structure et son fonctionnement interne est essentiel pour tout développeur souhaitant approfondir ses connaissances en contrôle de version avec Git. Bien que la plupart des utilisateurs n'aient pas besoin d'interagir directement avec le répertoire .git, comprendre comment Git suit les modifications peut être extrêmement utile pour résoudre les problèmes et optimiser votre flux de travail.

Répondez maintenant à l’exercice sur le contenu :

Lequel des fichiers ou répertoires suivants est responsable du stockage des paramètres spécifiques du référentiel Git ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Image de l'article Plongée en profondeur dans les stratégies Git Branch et Merge

Page suivante de lebook gratuit :

25Plongée en profondeur dans les stratégies Git Branch et Merge

0 minutes

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte