Table of Contents
Comprendre les objets Git : commit, tree et blob
Les développeurs qui utilisent Git sont probablement familiers avec la commande git commit, mais qu’est-ce qui se passe vraiment lorsque nous créons un nouveau commit ? Dans cet article, nous allons explorer les objets Git en détail : commit, tree et blob. Nous allons découvrir comment ils sont structurés et comment ils contribuent à la gestion du code source.
Les objets Git
Git utilise un modèle de stockage objet pour conserver les informations relatives au code source. Chaque objet est identifié par une chaîne unique appelée hash, qui permet d’identifier et de réutiliser des données sans avoir à les stocker dans leur intégratité.
Le commit object
Le commit object est probablement l’objet type le plus familier aux utilisateurs Git, puisqu’il s’agit de ce qu’ils sont habitués à créer avec la commande git commit. Cependant, le commit n’entrepose pas directement les fichiers modifiés ou les données. Il contient principalement des métadonnées et des pointeurs vers d’autres objets qui contiennent les informations réelles du commit.
Un commit contient :
- L’empreinte (hash) d’un
tree - L’empreinte (hash) de la parente (parent)
- Le nom et l’e-mail de l’auteur
- Le nom et l’e-mail du commiter
- Le message de commit
Voici un exemple de sortie pour afficher les informations d’un commit :
$ git cat-file -t 5bac93
commit
$ git cat-file commit 5bac93
tree 04d1daef...
parent b7850ef5...
author Geddy Lee <glee@rush.com> 1394791200 +0000
committer Neil Peart <npeart@rush.com> 1394791200 +0000
Premier commit !
Le tree object
Le tree object représente un dossier dans le système de fichiers traditionnel : des conteneurs imbriqués pour les fichiers ou d’autres dossiers. Un tree contient :
- 0 ou plusieurs objets
blob - 0 ou plusieurs objets
tree
Vous pouvez lister les contenus d’un objet tree à l’aide de la commande git cat-file -p :
$ git cat-file -p 07b1a631
100644 blob b91bba1b .gitignore
100644 blob cc0956f1 Makefile
040000 tree 92e1ca7e src ...
L’objet blob
L’objet blob contient les données binaires de n’importe quel fichier. Cela peut être du code source, un article de blog ou même une image PNG. Si vous avez l’empreinte (hash) d’un objet blob, vous pouvez afficher ses contenus :
$ git cat-file -p cae391ff
Welcome to my project !
Cette est le fichier Readme.txt ...
Créer de nouveaux commits
La commande git commit crée plusieurs objets :
- Des objets
blobettreepour représenter le répertoire de projet - Un nouveau objet
commitavec les informations d’auteur, commiter et message de commit - Met à jour la référence HEAD dans
.git/HEADvers l’empreinte du nouvel objetcommit
Cela résulte en une nouvelle snapshot de votre projet étant ajoutée au Git qui est liée à l’état précédent.
Démarrer un nouveau projet avec git-svn
Si vous travaillez sur un projet existant hébergé sur SVN, vous pouvez démarrer un nouveau projet avec git svn clone. Cette commande clone le repository SVN local et crée un nouveau dépôt Git.
$ git svn clone http://tfs:8080/tfs/DefaultCollection/$/My.Project.Name
Intégration de git-tfs
Pour intégrer Git avec TFVS, vous pouvez utiliser la commande git tfs clone. Cette commande crée un nouveau dépôt Git qui est lié à votre repository TFVS.
$ git tfs clone http://tfs:8080/tfs/DefaultCollection/$/My.Project.Name
Créer de nouveaux refs
Vous pouvez créer un nouveau ref avec git checkout -b <refname>. Cette commande crée une nouvelle branche qui pointe vers le dernier commit.
$ git checkout -b TestBranch
Mise en place d’un dépôt Git
Pour mettre en place un dépôt Git, vous pouvez utiliser la commande git add . pour ajouter tous les fichiers du projet et puis git commit -m "Initial commit". Cela crée un premier commit qui contient les métadonnées du projet.
Considérations sur l’espace disque
Il est important de noter que Git ne stocke pas directement les différences entre les versions, mais plutôt les fichiers complets. Il existe donc des considérations importantes concernant l’utilisation de l’espace disque lorsque vous travaillez avec Git.
Conclusion
Dans cet article, nous avons exploré les objets Git en détail : commit, tree et blob. Nous avons vu comment ils sont structurés et comment ils contribuent à la gestion du code source. Nous avons également discuté des commandes pour créer de nouveaux commits, démarrer un nouveau projet avec git-svn et intégrer Git avec TFVS. J’espère que cet article vous a aidé à mieux comprendre les fonctionnalités de base de Git.
Sujets suivants
- Comprendre les références (refs) dans Git
- Utiliser les commandes
git logetgit showpour visualiser l’historique des commits
Pour aller plus loin, vous pouvez consulter la documentation officielle de Git et les ressources en ligne pour apprendre davantage sur les fonctionnalités avancées de Git.
In-Article Ad
Dev Mode
Mahmoud DEVO
Senior Full-Stack Developer
I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.
Enjoyed this article?
Subscribe to get more tech content delivered to your inbox.
Related Articles
Les contributeurs du livre "Git" : une liste exhaustive des
Voici une proposition de meta-description : "Expliquez Git avec plus de 60 experts ! Découvrez les meilleures pratiques et astuces pour maîtriser Git. Lisez gr
Guide Git pour professionnels : configuration, branches et resolution de conflits
Configurez Git, creez des depots, gerez vos branches et resolvez les conflits. Guide complet avec commandes essentielles pour developpeurs.
Gerer les revisions Git : cherry-pick, rebase et recuperation de fichiers supprimes
Maitrisez git cherry-pick, rebase --autosquash et git reset. Apprenez a copier des commits et recuperer des fichiers supprimes.