Comment vérifier si un dépôt Git distant a des étiquettes (tags)

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), vous apprendrez à vérifier les étiquettes (tags) sur un dépôt Git distant sans avoir besoin de cloner l'intégralité du dépôt. Nous allons explorer l'utilisation de la commande git ls-remote --tags pour lister efficacement les étiquettes distantes.

Ensuite, vous apprendrez à récupérer ces étiquettes distantes dans votre dépôt local et à les afficher à l'aide de la commande git tag. Enfin, nous allons montrer comment tester ce processus avec un dépôt distant ne contenant aucune étiquette.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git(("Git")) -.-> git/CollaborationandSharingGroup(["Collaboration and Sharing"]) git/SetupandConfigGroup -.-> git/init("Initialize Repo") git/BranchManagementGroup -.-> git/tag("Git Tags") git/CollaborationandSharingGroup -.-> git/fetch("Download Updates") git/CollaborationandSharingGroup -.-> git/remote("Manage Remotes") subgraph Lab Skills git/init -.-> lab-560075{{"Comment vérifier si un dépôt Git distant a des étiquettes (tags)"}} git/tag -.-> lab-560075{{"Comment vérifier si un dépôt Git distant a des étiquettes (tags)"}} git/fetch -.-> lab-560075{{"Comment vérifier si un dépôt Git distant a des étiquettes (tags)"}} git/remote -.-> lab-560075{{"Comment vérifier si un dépôt Git distant a des étiquettes (tags)"}} end

Exécuter git ls-remote --tags

Dans cette étape, nous allons apprendre à afficher les étiquettes (tags) sur un dépôt Git distant sans cloner l'intégralité du dépôt. Cela est utile lorsque vous avez seulement besoin de voir les étiquettes disponibles, par exemple, pour vérifier les versions de publication spécifiques.

Nous allons utiliser la commande git ls-remote avec l'option --tags. Cette commande récupère une liste de références (comme les branches et les étiquettes) à partir d'un dépôt distant.

Essayons-le avec un dépôt Git public. Nous allons utiliser le dépôt du projet Git lui-même sur GitHub comme exemple.

Ouvrez votre terminal et exécutez la commande suivante :

git ls-remote --tags https://github.com/git/git.git

Cette commande se connecte au dépôt distant à l'URL spécifiée et liste toutes les étiquettes disponibles dans ce dépôt.

Vous verrez une longue liste de résultats, similaire à ceci (le résultat exact variera en fonction des étiquettes actuelles) :

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9  refs/tags/v2.30.0
b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9a1  refs/tags/v2.30.1
...

Chaque ligne du résultat représente une étiquette. La première partie est le hachage du commit vers lequel l'étiquette pointe, et la deuxième partie est le chemin de référence de l'étiquette (par exemple, refs/tags/v2.30.0).

La commande git ls-remote est un outil puissant pour inspecter un dépôt distant sans télécharger toutes ses données. En utilisant l'option --tags, nous filtrons spécifiquement le résultat pour n'afficher que les étiquettes. Cela est beaucoup plus rapide et utilise moins de bande passante que de cloner l'intégralité du dépôt juste pour voir les étiquettes.

Comprendre comment lister les étiquettes distantes est la première étape pour travailler avec les étiquettes dans un environnement distribué. Dans les étapes suivantes, nous allons explorer comment récupérer et utiliser ces étiquettes dans votre dépôt local.

Récupérer et vérifier les étiquettes (tags) Git

Dans l'étape précédente, nous avons vu comment lister les étiquettes sur un dépôt distant. Maintenant, apprenons à récupérer ces étiquettes dans notre dépôt local et à les afficher.

Tout d'abord, nous avons besoin d'un dépôt Git local pour travailler. Créons-en un simple :

mkdir my-tag-project
cd my-tag-project
git init

Maintenant que nous avons un dépôt local, nous pouvons récupérer les étiquettes du dépôt Git distant que nous avons utilisé précédemment. Nous allons utiliser la commande git fetch avec l'option --tags et l'URL distante :

git fetch --tags https://github.com/git/git.git

Cette commande récupère toutes les étiquettes du dépôt distant spécifié et les ajoute à votre dépôt local. Contrairement à git clone, git fetch ne télécharge que les objets nécessaires pour représenter les étiquettes et les commits associés ; il ne crée pas une copie de travail des fichiers du projet.

Vous devriez voir un résultat indiquant que les étiquettes sont en cours de récupération, similaire à ceci :

From https://github.com/git/git.git
 * [new tag]         v2.30.0    -> v2.30.0
 * [new tag]         v2.30.1    -> v2.30.1
...

Maintenant que les étiquettes sont récupérées, nous pouvons les afficher à l'aide de la commande git tag :

git tag

Cette commande liste toutes les étiquettes actuellement disponibles dans votre dépôt local. Vous devriez voir une liste des étiquettes qui viennent d'être récupérées depuis le dépôt distant, par exemple :

v2.30.0
v2.30.1
...

Vous avez réussi à récupérer les étiquettes depuis un dépôt distant et à les lister localement. Ceci est une étape cruciale lorsque vous avez besoin de travailler avec des versions de publication spécifiques ou des étapes clés (milestones) marquées par des étiquettes dans un projet.

Tester les dépôts distants sans étiquettes (tags)

Dans les étapes précédentes, nous avons appris à lister et à récupérer les étiquettes depuis un dépôt distant. Cependant, tous les dépôts distants n'ont pas d'étiquettes. Dans cette étape, nous allons tester git ls-remote --tags sur un dépôt qui n'a probablement aucune étiquette.

Nous allons utiliser un simple dépôt Git nouvellement initialisé hébergé sur un chemin local. Cela simule un dépôt distant pour lequel aucune étiquette n'a été créée.

Tout d'abord, créons un nouveau répertoire et initialisons un dépôt Git à l'intérieur. Nous allons le faire en dehors de notre répertoire actuel my-tag-project pour simuler un dépôt distant distinct.

cd ~/project
mkdir remote-repo
cd remote-repo
git init --bare

La commande git init --bare crée un dépôt Git nu (bare repository). Un dépôt nu n'a pas de répertoire de travail ; il est généralement utilisé comme dépôt central vers lequel les développeurs poussent (push) et depuis lequel ils tirent (pull) des modifications.

Maintenant, revenons dans notre répertoire my-tag-project :

cd ~/project/my-tag-project

À partir d'ici, nous pouvons utiliser git ls-remote --tags pour vérifier s'il y a des étiquettes dans notre nouveau "dépôt distant" que nous venons de créer. Nous allons utiliser le chemin local vers le dépôt nu comme URL distante :

git ls-remote --tags ~/project/remote-repo

Étant donné que nous venons d'initialiser ce dépôt et n'avons ajouté aucun commit ni étiquette, cette commande ne devrait produire aucun résultat. Cela indique qu'il n'y a pas d'étiquettes dans le dépôt distant spécifié.

Cela démontre que git ls-remote --tags affichera correctement rien lorsqu'un dépôt distant ne contient aucune étiquette. Cela est utile pour confirmer l'absence d'étiquettes ou pour des scripts où vous devez gérer des dépôts avec ou sans étiquettes.

Vous avez maintenant pratiqué la liste des étiquettes à la fois depuis un dépôt avec de nombreuses étiquettes et depuis un dépôt sans étiquettes. Cela vous donne une meilleure compréhension du comportement de git ls-remote --tags dans différents scénarios.

Résumé

Dans ce laboratoire (lab), nous avons appris à vérifier la présence d'étiquettes (tags) sur un dépôt Git distant sans le cloner en utilisant la commande git ls-remote --tags. Cette commande liste efficacement les étiquettes distantes en ne récupérant que les informations de référence, ce qui économise du temps et de la bande passante par rapport à un clonage complet.

Nous avons ensuite exploré comment récupérer ces étiquettes distantes dans un dépôt local en utilisant git fetch --tags et les afficher localement avec git tag. Enfin, nous avons pratiqué l'identification des dépôts distants qui n'ont aucune étiquette en observant la sortie de git ls-remote --tags.