Comment Git structure le contenu du référentiel ?
Table des matières
Un répertoire .git a une structure similaire à la suivante:
objets/ dossier
Dans ce répertoire, les données de vos objets Git sont stockées – tout le contenu des fichiers que vous avez déjà archivés, vos commits, arborescences et objets tag.
- objets/[0-9a-f][0-9a-f] dossiers
Un objet nouvellement créé est stocké dans son propre fichier. Les objets sont placés dans 256 sous-répertoires en utilisant les deux premiers caractères du nom d’objet SHA1 pour garder le nombre d’entrées de répertoire dans les objets lui-même à un nombre gérable. Les objets trouvés ici sont souvent appelés objets déballés ou en vrac.
- dossier objets/pack
Les fichiers qui stockent de nombreux objets sous forme compressée, ainsi que les fichiers d’index permettant d’y accéder de manière aléatoire, se trouvent dans ce répertoire.
- dossier objets/info
Les informations supplémentaires sur l’objet stocké sont placées dans ce répertoire.
dossier de références
Les références sont stockées dans des sous-répertoires de ce répertoire. La commande git prune sait préserver les objets accessibles à partir des références trouvées dans ce répertoire et ses sous-répertoires.
- refs/heads/ dossier
Contient des objets commit.
- refs/tags/ dossier
Contient n’importe quel nom d’objet.
- refs/remotes/ dossier
Contient les objets commit des branches copiées depuis un référentiel distant.
fichier-refs compressé
Le fichier est constitué d’en-têtes et d’étiquettes empaquetés. C’est utile pour un accès efficace au référentiel.
Fichier HEAD
Ce fichier contient une référence à la branche sur laquelle vous vous trouvez. Ceci indique à Git ce qu’il faut utiliser comme parent de votre prochain commit.
fichier de configuration
Ceci est le fichier de configuration principal de Git. Il conserve les options Git spécifiques à votre projet, telles que vos télécommandes, vos configurations push, vos branches de suivi, etc. Votre configuration sera chargée d’abord depuis ce fichier, puis depuis un fichier ~/.gitconfig et enfin depuis un fichier /etc/gitconfig , s’ils existent.
succursales
Un moyen obsolète de stocker des raccourcis à utiliser pour spécifier une URL vers git fetch , git pull et git push . Ce mécanisme est un héritage et il est peu probable qu’il soit trouvé dans les référentiels modernes.
dossier hooks
Ce répertoire contient les scripts shell qui sont appelés après les commandes Git correspondantes. Par exemple, après avoir exécuté une validation, Git essaiera d’exécuter le script de post-validation.
fichier d’index
L’index GIT est utilisé comme une zone de transit entre votre répertoire de travail et votre référentiel. Vous pouvez utiliser l’index pour construire un ensemble de modifications que vous voulez valider ensemble. Quand vous créez un commit, ce qui est commité est ce qui est actuellement dans l’index, pas ce qui est dans votre répertoire de travail. C’est un fichier binaire contenant une liste triée de noms de chemins, chacun avec des permissions et le SHA-1 d’un objet blob.
dossier info
Des informations supplémentaires sur le référentiel sont enregistrées dans ce répertoire.
dossier des télécommandes
Ce dossier contient des raccourcis pour les URL et les noms de référence par défaut à utiliser lors de l’interaction avec des référentiels distants via les commandes git fetch , git pull et git push . Ce mécanisme est un héritage et il est peu probable qu’il soit trouvé dans les référentiels modernes.
dossier des journaux
Stocke les modifications apportées aux références dans le référentiel.
- dossier logs/refs/heads/
Enregistre toutes les modifications apportées aux différentes extrémités des branches
- dossier logs/refs/tags/
Enregistre toutes les modifications apportées aux différentes étiquettes.
dossier modules
Contient les git-repositories des sous-modules.
dossier worktrees
Contient les données administratives des arbres de travail liés. Chaque sous-répertoire contient la partie liée à l’arbre de travail d’un arbre de travail lié.