lab 22 Fonctionnement interne de Git:
le répertoire .git

Buts

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.

Table des matières