lab 22 Fonctionnement interne de Git:
le répertoire .git
Buts
- Apprendre la structure du répertoire
.git
Le répertoire .git
01
C’est le moment de faire une petite exploration. En premier, depuis la racine de votre répertoire de projet…
Execute:
ls -C .git
Output:
$ ls -C .git branches config HEAD index logs ORIG_HEAD COMMIT_EDITMSG description hooks info objects refs
C’est le répertoire magique où les “trucs” de git sont stockés. Allons jeter un oeil dans le répertoire des objets.
Le magasin d’objets 02
Execute:
ls -C .git/objects
Output:
$ ls -C .git/objects 08 19 26 33 41 6e 71 83 9d a8 ba e7 fc pack 0b 22 2c 38 5a 6f 80 8c a0 a9 c8 ed info
Vous devriez voir un ensemble de répertoires avec des noms de 2 lettres. Les noms des répertoires sont les deux premières lettres du hash sha1 de l’objet stocké dans git.
Approfondissement sur le magasin d’objets 03
Execute:
ls -C .git/objects/<dir>
Output:
$ ls -C .git/objects/08 2992369f69e5409933b2167e85899ddd1a26ae
Regardez dans l’un des répertoires à deux lettres. Vous devriez voir quelques fichiers avec des noms de 38 caractères. Ce sont les fichiers qui contiennent les objets stockés dans git. Ces fichiers sont compressés et encodés, ainsi regarder à leur contenu directement ne sera pas très utile, mais nous allons jeter un oeil plus attentif d’ici peu.
Le fichier config 04
Execute:
cat .git/config
Output:
$ cat .git/config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [user] name = Jim Weirich email = jim (at) edgecase.com
C’est un fichier de configuration propre au projet. Les entrées ici vont supplanter les entrées de configuration dans le fichier .gitconfig
de votre répertoire personnel(home), du moins pour ce projet.
Branches et tags 05
Execute:
ls .git/refs ls .git/refs/heads ls .git/refs/tags cat .git/refs/tags/v1
Output:
$ ls .git/refs/heads master $ ls .git/refs heads tags $ ls .git/refs/tags v1 v1-beta $ cat .git/refs/tags/v1 a9c6007328d30d5714eabd82a9623065317bbe61
Vous devriez reconnaître les fichiers dans le sous-répertoire des tags. Chaque fichier correspond à un tag que vous avez créé avec la commande git tag
un peu plus tôt. Son contenu est juste le hash du commit associé au tag.
Le répertoire heads est similaire, mais est utilisé par les branches plutôt que les tags. Nous avons seulement une branche pour le moment, ainsi tout ce que verrez dans ce répertoire est master.
Le fichier HEAD 06
Execute:
cat .git/HEAD
Output:
$ cat .git/HEAD ref: refs/heads/master
Le fichier HEAD contient une référence à la branche courante. Cela devrait être une référence à master pour le moment.