Comment vérifier si un fichier fait partie d'une branche spécifique

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, vous apprendrez à vérifier si un fichier spécifique existe dans une branche Git particulière sans avoir besoin de basculer vers cette branche. Nous allons explorer deux méthodes principales : utiliser la commande git ls-tree pour inspecter le contenu de l'objet arbre d'une branche et utiliser la commande git log pour afficher l'historique des commits d'un fichier sur une branche spécifique. Vous allez pratiquer ces techniques en créant une nouvelle branche, en ajoutant un fichier, puis en vérifiant sa présence depuis une autre branche. Enfin, vous appliquerez ces méthodes pour tester l'existence de fichiers dans d'autres branches.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/branch -.-> lab-560029{{"Comment vérifier si un fichier fait partie d'une branche spécifique"}} git/checkout -.-> lab-560029{{"Comment vérifier si un fichier fait partie d'une branche spécifique"}} git/log -.-> lab-560029{{"Comment vérifier si un fichier fait partie d'une branche spécifique"}} end

Exécuter git ls-tree sur une branche et un fichier

Dans cette étape, nous allons explorer comment afficher le contenu d'une branche et d'un fichier spécifiques dans votre dépôt Git en utilisant la commande git ls-tree. Cette commande est utile pour inspecter l'état de votre projet à un point particulier de l'historique ou sur une autre branche sans réellement basculer vers cette branche.

Tout d'abord, assurons-nous que nous sommes dans le répertoire de notre projet.

cd ~/project/my-time-machine

Maintenant, créons une nouvelle branche appelée feature-branch et basculons vers elle. Nous allons y ajouter un nouveau fichier.

git branch feature-branch
git checkout feature-branch
echo "This is a new feature." > feature.txt
git add feature.txt
git commit -m "Add new feature file"

Vous devriez voir une sortie similaire à celle-ci après le commit :

[feature-branch a1b2c3d] Add new feature file
 1 file changed, 1 insertion(+)
 create mode 100644 feature.txt

Maintenant, nous avons une nouvelle branche feature-branch avec un fichier feature.txt qui n'existe pas sur la branche master.

Basculez de nouveau vers la branche master.

git checkout master

Vous devriez voir une sortie indiquant que vous avez basculé de branche :

Switched to branch 'master'

Notez que le fichier feature.txt n'est plus visible dans votre répertoire actuel car vous êtes sur la branche master.

Maintenant, utilisons git ls-tree pour voir le contenu de la branche feature-branch et plus précisément le fichier feature.txt depuis la branche master sans revenir en arrière.

La syntaxe de base de git ls-tree est git ls-tree <tree-ish> <path>. <tree-ish> peut être un nom de branche, un hash de commit ou une étiquette (tag). <path> est le chemin du fichier ou du répertoire que vous souhaitez inspecter.

Pour afficher le contenu du répertoire racine de la branche feature-branch, vous pouvez utiliser :

git ls-tree feature-branch

Vous devriez voir une sortie similaire à celle-ci, montrant les fichiers à la racine de feature-branch :

100644 blob a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9	feature.txt
100644 blob f9e8d7c6b5a4938271605f4e3d2c1b0a98765432	message.txt

Cette sortie montre le mode de fichier, le type d'objet (blob pour fichier), le hash de l'objet et le nom du fichier.

Pour afficher les détails d'un fichier spécifique, comme feature.txt, sur la branche feature-branch, vous pouvez utiliser :

git ls-tree feature-branch feature.txt

Vous devriez voir une sortie similaire à celle-ci, spécifiquement pour feature.txt :

100644 blob a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9	feature.txt

Cette commande vous permet de jeter un coup d'œil à d'autres branches ou à des commits passés pour voir l'état de fichiers spécifiques sans changer votre répertoire de travail actuel. Cela est incroyablement utile pour comparer des fichiers entre les branches ou inspecter des versions historiques.

Utiliser git log <branche> -- <fichier>

Dans cette étape, nous allons apprendre à afficher l'historique des commits d'un fichier spécifique sur une branche particulière en utilisant la commande git log avec le séparateur --. Cela est incroyablement utile lorsque vous souhaitez voir comment un seul fichier a évolué au fil du temps, indépendamment de la branche sur laquelle vous vous trouvez actuellement.

Assurez-vous que vous êtes toujours dans le répertoire de votre projet :

cd ~/project/my-time-machine

Nous sommes actuellement sur la branche master. Affichons l'historique des commits du fichier message.txt sur cette branche.

git log -- message.txt

Vous devriez voir l'historique des commits pour message.txt. Étant donné que nous n'avons effectué qu'un seul commit incluant ce fichier sur la branche master (le commit initial), la sortie ressemblera à ceci :

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Your Name <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

Appuyez sur q pour quitter la vue des logs.

Maintenant, affichons l'historique des commits du fichier feature.txt sur la branche feature-branch. N'oubliez pas que nous sommes toujours sur la branche master, mais nous pouvons inspecter l'historique d'un fichier sur une autre branche.

La syntaxe est git log <nom-de-branche> -- <chemin-du-fichier>.

git log feature-branch -- feature.txt

Vous devriez voir l'historique des commits pour feature.txt sur la branche feature-branch. Cela montrera le commit où vous avez ajouté le fichier feature.txt :

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (feature-branch)
Author: Your Name <[email protected]>
Date:   Mon Aug 7 10:05:00 2023 +0000

    Add new feature file

Appuyez sur q pour quitter la vue des logs.

Le séparateur -- est important. Il indique à Git que les arguments suivants sont des chemins de fichiers, pas des branches ou d'autres références. Cela vous permet de spécifier exactement l'historique du fichier que vous souhaitez voir.

Cette commande est incroyablement puissante pour comprendre l'évolution de parties spécifiques de votre projet. Si vous essayez de déterminer quand une ligne de code particulière a été ajoutée ou modifiée, git log -- <fichier> est votre meilleur allié. Vous pouvez même ajouter des options comme -p pour voir les modifications réelles apportées dans chaque commit pour ce fichier.

Tester des fichiers dans d'autres branches

Dans cette étape, nous allons pratiquer l'accès et l'affichage du contenu de fichiers provenant de différentes branches sans changer de branche actuelle. C'est une tâche très courante lorsque vous avez besoin de comparer des versions d'un fichier ou de vérifier rapidement quelque chose dans une autre branche.

Assurez-vous que vous êtes dans le répertoire de votre projet :

cd ~/project/my-time-machine

Nous sommes actuellement sur la branche master. Vérifions cela :

git branch

La sortie devrait afficher * master, indiquant que vous êtes sur la branche master.

  feature-branch
* master

Maintenant, essayons d'afficher le contenu de feature.txt qui n'existe que sur la branche feature-branch. Nous pouvons utiliser la commande git show pour cela. La commande git show est généralement utilisée pour afficher différents types d'objets dans Git, y compris le contenu de fichiers à un commit ou une branche spécifique.

La syntaxe pour afficher un fichier depuis une autre branche est git show <nom-de-branche>:<chemin-du-fichier>.

git show feature-branch:feature.txt

Vous devriez voir le contenu du fichier feature.txt de la branche feature-branch :

This is a new feature.

C'est très pratique ! Vous n'avez pas eu à changer de branche pour voir le contenu du fichier.

Maintenant, essayons d'afficher le contenu de message.txt depuis la branche feature-branch. Ce fichier existe sur les deux branches, mais son contenu pourrait être différent si nous l'avions modifié sur feature-branch. Dans notre cas, le contenu est le même que sur master.

git show feature-branch:message.txt

Vous devriez voir le contenu de message.txt de la branche feature-branch :

Hello, Future Me

Cela montre comment vous pouvez utiliser git show pour accéder à des fichiers depuis n'importe quelle branche ou commit de votre dépôt. C'est une technique puissante pour comparer des versions de fichiers, déboguer des problèmes en regardant des états passés ou simplement inspecter le code dans d'autres branches sans perturber votre travail actuel.

Être capable d'inspecter rapidement des fichiers dans d'autres branches ou commits est une compétence précieuse qui vous fait gagner du temps et vous aide à mieux comprendre l'historique et l'état de votre projet.

Résumé

Dans ce laboratoire (lab), nous avons appris à vérifier si un fichier fait partie d'une branche spécifique dans Git. Nous avons commencé par utiliser la commande git ls-tree pour afficher le contenu d'une branche et d'un fichier spécifique au sein de cette branche sans basculer sur la branche. Cela a impliqué de créer une nouvelle branche, d'ajouter un fichier à celle-ci, de revenir à la branche d'origine, puis d'utiliser git ls-tree avec le nom de la branche et le chemin du fichier pour vérifier la présence et les détails du fichier sur l'autre branche. Cette méthode offre un moyen rapide de voir si un fichier existe sur une autre branche et son hachage de blob associé.