Comment vérifier si une étiquette Git a été poussée vers un dépôt distant

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 si une étiquette (tag) Git a été poussée (push) vers un dépôt distant. Nous commencerons par explorer comment afficher les étiquettes sur un dépôt distant sans le cloner, en utilisant la commande git ls-remote --tags.

Ensuite, vous apprendrez à comparer les étiquettes présentes dans votre dépôt local avec celles du dépôt distant, vous permettant ainsi d'identifier tout écart ou étiquette non poussée. Enfin, nous montrerons comment tester et vérifier que vos étiquettes locales ont été correctement poussées vers le dépôt distant.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git(("Git")) -.-> git/CollaborationandSharingGroup(["Collaboration and Sharing"]) git/SetupandConfigGroup -.-> git/init("Initialize Repo") git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BranchManagementGroup -.-> git/tag("Git Tags") git/CollaborationandSharingGroup -.-> git/remote("Manage Remotes") subgraph Lab Skills git/init -.-> lab-560112{{"Comment vérifier si une étiquette Git a été poussée vers un dépôt distant"}} git/add -.-> lab-560112{{"Comment vérifier si une étiquette Git a été poussée vers un dépôt distant"}} git/status -.-> lab-560112{{"Comment vérifier si une étiquette Git a été poussée vers un dépôt distant"}} git/tag -.-> lab-560112{{"Comment vérifier si une étiquette Git a été poussée vers un dépôt distant"}} git/remote -.-> lab-560112{{"Comment vérifier si une étiquette Git a été poussée vers un dépôt distant"}} end

Exécuter git ls-remote --tags

Dans cette étape, nous apprendrons à 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 trouver une version spécifique à télécharger.

Nous utiliserons la commande git ls-remote --tags. Cette commande liste les références (comme les branches et les étiquettes) dans un dépôt distant. L'option --tags filtre spécifiquement la sortie pour n'afficher que les étiquettes.

Essayons-le avec un dépôt Git public. Nous utiliserons le dépôt Git du populaire projet curl comme exemple.

Ouvrez votre terminal et exécutez la commande suivante :

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

Vous devriez voir une longue liste de résultats, similaire à ceci (le résultat exact variera à mesure que de nouvelles étiquettes sont ajoutées) :

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9  refs/tags/curl-7_80_0
b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0  refs/tags/curl-7_81_0
...
z9y8x7w6v5u4t3s2r1q0p9o8n7m6l5k4j3i2h1  refs/tags/curl-8_2_0

Chaque ligne de la sortie représente une étiquette dans le dépôt distant. La première partie est le hachage du commit vers lequel l'étiquette pointe, et la deuxième partie est le nom de l'étiquette (préfixé par refs/tags/).

Cette commande est puissante car elle vous permet d'inspecter les étiquettes d'un dépôt distant sans avoir besoin de télécharger l'historique complet du projet. Cela économise du temps et de la bande passante, en particulier pour les dépôts volumineux.

Comprendre comment afficher les étiquettes distantes est la première étape pour travailler avec les étiquettes qui existent en dehors de votre dépôt local. Dans les étapes suivantes, nous explorerons comment comparer ces étiquettes distantes avec vos étiquettes locales et comment gérer les étiquettes qui n'ont pas encore été poussées (push) vers le dépôt distant.

Comparer les étiquettes locales et distantes

Dans l'étape précédente, nous avons vu comment lister les étiquettes (tags) sur un dépôt distant. Maintenant, voyons comment comparer ces étiquettes distantes avec les étiquettes qui existent dans votre dépôt local. Cela est utile pour vérifier si votre dépôt local est à jour par rapport au dépôt distant ou si vous avez des étiquettes locales qui n'ont pas encore été poussées (push).

Tout d'abord, assurons-nous que nous sommes dans un dépôt Git. Nous allons en créer un simple pour cet exemple. Accédez au répertoire de votre projet et initialisez un nouveau dépôt Git :

cd ~/project
mkdir my-tag-repo
cd my-tag-repo
git init

Maintenant, créons un fichier et effectuons un premier commit :

echo "Initial content" > file.txt
git add file.txt
git commit -m "Initial commit"

Ensuite, créons une étiquette locale. Nous allons créer une étiquette légère nommée v1.0 :

git tag v1.0

Maintenant, listons nos étiquettes locales en utilisant la commande git tag :

git tag

Vous devriez voir :

v1.0

Cela confirme que notre étiquette locale v1.0 a été créée.

Pour comparer nos étiquettes locales avec les étiquettes distantes, nous aurions généralement besoin d'un dépôt distant. Comme nous n'avons pas encore configuré de dépôt distant pour notre my-tag-repo, nous pouvons simuler le concept de comparaison.

Imaginez que vous avez un dépôt distant lié à votre dépôt local. Vous pourriez récupérer les dernières informations du dépôt distant sans fusionner les modifications en utilisant git fetch --tags. Cette commande récupère toutes les étiquettes du dépôt distant.

Après avoir récupéré les informations, vous pouvez utiliser git tag -l pour lister les étiquettes locales et git ls-remote --tags origin (en supposant que 'origin' est le nom de votre dépôt distant) pour lister les étiquettes distantes. En comparant les résultats de ces deux commandes, vous pouvez voir quelles étiquettes sont présentes localement, quelles sont présentes à distance et quelles sont présentes dans les deux.

Par exemple, si git tag -l affiche v1.0 et v1.1, mais que git ls-remote --tags origin n'affiche que v1.0, cela signifie que votre étiquette locale v1.1 n'a pas encore été poussée vers le dépôt distant.

Dans cet environnement de laboratoire (lab), nous n'avons pas de serveur distant pour pousser les étiquettes. Cependant, comprendre les commandes git tag (pour les étiquettes locales) et git ls-remote --tags (pour les étiquettes distantes) est la clé pour les comparer.

Dans l'étape suivante, nous explorerons le scénario où vous avez des étiquettes locales qui ne sont pas encore sur le dépôt distant.

Tester les étiquettes non poussées (unpushed tags)

Dans l'étape précédente, nous avons créé une étiquette locale v1.0. Si nous avions configuré un dépôt distant, cette étiquette n'existerait actuellement que dans notre dépôt local et non sur le dépôt distant. Il s'agit d'une étiquette "non poussée" (unpushed tag).

Lorsque vous créez une étiquette en utilisant git tag, elle est créée localement par défaut. Les étiquettes ne sont pas incluses automatiquement lorsque vous poussez vos branches vers un dépôt distant en utilisant git push. Vous devez explicitement pousser les étiquettes.

Pour pousser une seule étiquette vers le dépôt distant, vous utiliseriez la commande git push origin <tagname>. Par exemple, pour pousser notre étiquette v1.0 vers un dépôt distant nommé origin, nous exécuterions git push origin v1.0.

Pour pousser toutes vos étiquettes locales vers le dépôt distant, vous pouvez utiliser l'option --tags avec git push :

## Cette commande pousserait toutes les étiquettes locales vers le dépôt distant
## git push origin --tags

Comme nous n'avons pas configuré de dépôt distant dans cet environnement de laboratoire (lab), nous ne pouvons pas réellement effectuer l'opération de push. Cependant, nous pouvons comprendre le concept des étiquettes non poussées et comment les identifier.

Si vous travailliez avec un dépôt distant, après avoir créé une étiquette locale, l'exécution de git status ne vous dirait pas explicitement que vous avez des étiquettes non poussées. La commande git status se concentre principalement sur les modifications dans votre répertoire de travail et la zone de préparation (staging area), ainsi que sur l'état de vos branches par rapport à leurs homologues en amont (upstream).

Pour voir quelles étiquettes locales ne sont pas sur le dépôt distant, vous compareriez généralement le résultat de git tag (étiquettes locales) et git ls-remote --tags <remote-url> ou git ls-remote --tags <remote-name> (étiquettes distantes), comme nous l'avons discuté dans l'étape précédente. Toute étiquette listée par git tag mais non par git ls-remote --tags est une étiquette non poussée.

Comprendre la distinction entre les étiquettes locales et distantes, et savoir comment pousser vos étiquettes locales, est crucial pour partager les étapes importantes de votre version avec les autres et pour vous assurer que votre dépôt distant reflète précisément les points importants de l'historique de votre projet.

Cela conclut notre exploration de l'affichage et de la comparaison des étiquettes locales et distantes. Vous avez appris à voir les étiquettes distantes sans cloner le dépôt, à lister les étiquettes locales et le concept des étiquettes non poussées.

Résumé

Dans ce laboratoire (lab), nous avons appris à vérifier si les étiquettes (tags) Git ont été poussées vers un dépôt distant. Nous avons commencé par utiliser la commande git ls-remote --tags pour afficher les étiquettes présentes sur un dépôt distant sans avoir besoin de le cloner, ce qui démontre son efficacité pour inspecter les étiquettes distantes.

Ensuite, nous avons exploré des méthodes pour comparer ces étiquettes distantes avec les étiquettes locales, ce qui est crucial pour identifier les écarts et garantir la synchronisation entre les dépôts locaux et distants. Cette comparaison permet de déterminer si les étiquettes locales ont été correctement poussées ou si le dépôt local manque d'étiquettes distantes.