Comment vérifier si un répertoire est suivi par Git

GitGitBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), nous apprendrons à déterminer si un répertoire est suivi par Git. Nous explorerons le contenu d'un dépôt Git en utilisant la commande git ls-tree pour examiner les fichiers et les répertoires à un commit spécifique.

En outre, nous utiliserons la commande git status pour vérifier l'état actuel de suivi des fichiers dans notre dépôt et comprendre comment Git gère les répertoires vides.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git/SetupandConfigGroup -.-> git/git("Show Version") git/BasicOperationsGroup -.-> git/status("Check Status") subgraph Lab Skills git/git -.-> lab-560020{{"Comment vérifier si un répertoire est suivi par Git"}} git/status -.-> lab-560020{{"Comment vérifier si un répertoire est suivi par Git"}} end

Exécuter git ls-tree pour un répertoire

Dans cette étape, nous explorerons le contenu de notre dépôt Git en utilisant la commande git ls-tree. Cette commande nous permet de visualiser le contenu d'un objet arbre (tree object), qui représente l'état d'un répertoire à un commit spécifique.

Tout d'abord, assurez-vous que vous êtes dans le répertoire my-time-machine :

cd ~/project/my-time-machine

Maintenant, utilisons git ls-tree pour voir le contenu du dernier commit. Nous utiliserons HEAD pour faire référence au dernier commit :

git ls-tree HEAD

Vous devriez voir une sortie similaire à celle-ci :

100644 blob a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9	message.txt

Décortiquons cette sortie :

  • 100644 : Il s'agit du mode de fichier, indiquant qu'il s'agit d'un fichier ordinaire.
  • blob : Cela indique le type d'objet. Un objet blob stocke le contenu d'un fichier.
  • a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 : Il s'agit de l'identifiant unique (empreinte SHA-1) de l'objet blob qui stocke le contenu de message.txt. Votre empreinte sera différente.
  • message.txt : Il s'agit du nom du fichier.

La commande git ls-tree est utile pour inspecter le contenu d'un commit spécifique sans extraire (check out) l'intégralité du commit. Elle vous montre les fichiers et les répertoires qui étaient suivis par Git à ce moment-là.

Imaginez cela comme regarder à l'intérieur d'une capsule temporelle spécifique (commit) pour voir exactement quels fichiers étaient inclus et quelles étaient leurs empreintes uniques (empreintes blob). C'est un moyen puissant de comprendre la structure et le contenu de l'historique de votre projet.

Utiliser git status pour vérifier le suivi

Dans les étapes précédentes, nous avons créé un fichier et l'avons validé (committed) dans notre dépôt Git. Maintenant, utilisons à nouveau la commande git status pour voir l'état actuel de notre dépôt et confirmer que notre fichier est suivi.

Assurez-vous que vous êtes toujours dans le répertoire ~/project/my-time-machine :

cd ~/project/my-time-machine

Maintenant, exécutez la commande git status :

git status

Vous devriez voir une sortie similaire à celle-ci :

On branch master
nothing to commit, working tree clean

Cette sortie nous indique quelques informations importantes :

  • On branch master : Nous sommes actuellement sur la branche master, qui est la ligne principale de notre projet.
  • nothing to commit, working tree clean : C'est la partie essentielle. Cela signifie qu'il n'y a pas de modifications dans notre répertoire de travail qui n'ont pas encore été validées. Git suit tous les fichiers qui doivent être suivis, et il n'y a pas de nouveaux fichiers ou de fichiers modifiés qui doivent être ajoutés ou validés.

C'est l'état souhaité lorsque vous avez terminé de faire des modifications et les avez validées. Cela confirme que Git est au courant de l'état actuel de votre projet et que tout est à jour dans votre dépôt.

En comparant cette sortie à celle de git status que nous avons vue avant de créer et de valider message.txt, cela met en évidence la différence entre un dépôt vide, un dépôt avec des fichiers non suivis et un dépôt propre avec des fichiers suivis.

Comprendre git status est crucial car c'est votre outil principal pour savoir ce qui se passe dans votre dépôt et quelles actions vous devez entreprendre (comme ajouter ou valider des fichiers).

Tester les répertoires vides

Dans cette étape, nous explorerons la façon dont Git gère les répertoires vides. C'est un point souvent source de confusion pour les débutants, car Git se comporte différemment avec les répertoires par rapport aux fichiers.

Tout d'abord, assurez-vous que vous êtes dans le répertoire ~/project/my-time-machine :

cd ~/project/my-time-machine

Maintenant, créons un nouveau répertoire vide à l'intérieur de notre projet :

mkdir empty-folder

Nous avons créé le répertoire. Maintenant, vérifions l'état de notre dépôt en utilisant git status :

git status

Vous devriez voir une sortie similaire à celle-ci :

On branch master
nothing to commit, working tree clean

Notez que Git ne signale pas empty-folder comme un répertoire non suivi. C'est parce que Git suit le contenu des fichiers, pas les répertoires eux-mêmes. Un répertoire vide n'a aucun contenu à suivre.

C'est un concept important dans Git. Si vous avez besoin d'inclure un répertoire vide dans votre dépôt, la solution courante consiste à placer un fichier factice à l'intérieur. Une pratique courante consiste à créer un fichier nommé .gitkeep (bien que le nom n'ait pas d'importance, c'est juste une convention).

Créons un fichier .gitkeep à l'intérieur de empty-folder :

touch empty-folder/.gitkeep

Maintenant, vérifions à nouveau git status :

git status

Cette fois, vous devriez voir :

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	untracked files present (use "git add" to track)

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	empty-folder/

Maintenant, Git voit empty-folder/ car il contient un fichier (.gitkeep) qui peut être suivi.

Cela démontre que Git suit la présence de fichiers à l'intérieur des répertoires, plutôt que les répertoires eux-mêmes. Pour inclure un répertoire dans l'historique de votre dépôt, il doit contenir au moins un fichier suivi.

Résumé

Dans ce laboratoire, nous avons appris à vérifier si un répertoire et son contenu sont suivis par Git. Nous avons utilisé la commande git ls-tree HEAD pour inspecter le contenu du dernier commit, en comprenant qu'elle affiche les fichiers suivis ainsi que leurs objets blob associés et leurs hachages. Cette commande fournit un instantané de l'état du dépôt à un commit spécifique.

Nous avons également utilisé la commande git status pour vérifier l'état actuel du suivi des fichiers dans le dépôt, en confirmant que les fichiers validés (committed) sont effectivement suivis par Git. Enfin, nous avons exploré la façon dont Git gère les répertoires vides, en découvrant que Git ne suit pas directement les répertoires vides, mais plutôt les fichiers qu'ils contiennent.