Comment lister toutes les balises Git?

675

Dans mon référentiel, j'ai créé des balises à l'aide des commandes suivantes.

git tag v1.0.0 -m 'finally a stable release'
git tag v2.0.0 -m 'oops, there was still a major bug!'

Comment répertoriez-vous toutes les balises dans le référentiel?

Léo Léopold Hertz 준영
la source

Réponses:

955
git tag

devrait suffire. Voir la git tagpage de manuel


Vous avez aussi:

git tag -l <pattern>

Liste des balises avec des noms qui correspondent au modèle donné (ou tous si aucun modèle n'est donné).
Taper "git tag" sans arguments, répertorie également toutes les balises.


Plus récemment (" Comment trier les tags git? ", Pour Git 2.0+)

git tag --sort=<type>

Trier dans un ordre spécifique.

Le type pris en charge est:

  • " refname" (ordre lexicographique),
  • " version:refname" ou " v:refname" (les noms de balises sont traités comme des versions).

Ajoutez "-" pour inverser l'ordre de tri.


Cela répertorie les deux:

  • balises annotées : objets complets stockés dans la base de données Git. Ils sont un total de contrôle; contenir le nom du tagueur, l'e-mail et la date; avoir un message de marquage; et peut être signé et vérifié avec GNU Privacy Guard (GPG).
  • balises légères : pointeur simple vers un commit existant

Remarque: l' article git ready sur le marquage désapprouve le tag léger.

Sans arguments, git tag crée une balise «légère» qui est essentiellement une branche qui ne bouge jamais.
Les balises légères sont toujours utiles, peut-être pour marquer une bonne (ou mauvaise) version connue, ou un tas de commits que vous devrez peut-être utiliser à l'avenir.
Néanmoins, vous ne voudrez probablement pas pousser ce type de balises .

Normalement, vous voulez au moins passer l'option -a pour créer une balise non signée, ou signer la balise avec votre clé GPG via les options -s ou -u.


Cela étant dit, Charles Bailey souligne qu'un ' git tag -m "..."' implique en fait une balise appropriée (annotée non signée) (option ' -a'), et non une balise légère. Vous êtes donc bon avec votre commande initiale.


Cela diffère de:

git show-ref --tags -d

Qui répertorie les balises avec leurs validations (voir " Git Tag list, display commit sha1 hashes ").
Notez le -dafin de déréférencer l'objet tag annoté (qui a son propre commit SHA1) et afficher le commit tagué réel.

De même, git show --name-only <aTag>répertorierait la balise et la validation associée.

VonC
la source
6
Il vaut probablement la peine d'ajouter que -m ou -F implique -a (si aucun de -a, -s ou -u n'est fourni explicitement. Vous ne pouvez pas avoir de message de balise sans créer un objet de balise «approprié».
CB Bailey
1
Note à moi-même: avec ce vote positif, je passe 800000 (31 août 2018) sur Stack Overflow, un an et un mois après avoir atteint 700000 (6 août 2017) .
VonC
190

Pour lister les tags que je préfère:

git tag -n

L' -nindicateur affiche la première ligne du message d'annotation avec la balise, ou la première ligne de message de validation si la balise n'est pas annotée.

Vous pouvez également faire git tag -n5pour afficher les 5 premières lignes de l'annotation.

Finlandais
la source
48

Aussi git show-refest assez utile, de sorte que vous pouvez directement associer des tags avec le correspondant commits :

$ git tag
osgeolive-6.5
v8.0
...

$ git show-ref --tags
e7e66977c1f34be5627a268adb4b9b3d59700e40 refs/tags/osgeolive-6.5
8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 refs/tags/v8.0
...
Campa
la source
1
Habitué à Mercurial hg tagsj'aime ça git show-refme donne le tag ET la révision.
Justin
34

Et voici comment vous trouvez les balises distantes:

git ls-remote --tags origin

Dimitri Dewaele
la source
15

Essayez de le faire git tagdevrait être suffisant sinon essayez de le faire git fetchensuite git tag.

toto
la source
4
Je pense que ce qu'il veut dire est le suivant: l'exécution de la git tagcommande devrait être suffisante si vous voulez simplement voir une liste des balises disponibles. Si vous ne voyez pas certaines balises qui, selon vous, peuvent exister sur la télécommande, vos balises locales peuvent ne pas être synchronisées avec la télécommande. Dans ce cas, récupérez d'abord les dernières références / têtes de la télécommande git fetch, puis la réelle git tag. Je gère généralement un one-liner comme celui-ci: $ git fetch -p && git tagjuste pour être sûr que je regarde le plus récent et le plus grand.
demisx
11

La liste des balises disponibles dans Git est simple. Tapez simplement git tag(avec facultatif -lou --list).

$ git tag
v5.5
v6.5

Vous pouvez également rechercher des balises correspondant à un modèle particulier.

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2

Obtenir la dernière balise sur le référentiel git

La commande recherche la balise la plus récente accessible à partir d'une validation. Si la balise pointe vers la validation, seule la balise est affichée. Sinon, il suffixe le nom de la balise avec le nombre de validations supplémentaires au-dessus de l'objet balisé et le nom d'objet abrégé de la validation la plus récente.

git describe

Avec --abbrevset to 0, la commande peut être utilisée pour trouver le plus proche tagnamesans suffixe:

git describe --abbrev=0

Autres exemples:

git describe --abbrev=0 --tags # gets tag from current branch
git describe --tags `git rev-list --tags --max-count=1` // gets tags across all branches, not just the current branch

Comment tailler les balises git locales qui n'existent pas à distance

Pour faire simple, si vous essayez de faire quelque chose comme git fetch -p -tça, cela ne fonctionnera pas à partir de la version git 1.9.4.

Cependant, il existe une solution de contournement simple qui fonctionne toujours dans les dernières versions:

git tag -l | xargs git tag -d  // remove all local tags
git fetch -t                   // fetch remote tags
LYES - CHIOUKH
la source
La commande associée à rev-list m'a donné une liste, mais s'est terminée par une erreur:v0.1.0-rc1 fatal: No tags can describe '5db7534...4a94'. Try --always, or create some tags.
not2qubit
10

Pour voir les détails de la dernière balise disponible que j'utilise parfois:

git show `git describe` --pretty=fuller
Andrei Sura
la source
6

Si vous voulez vérifier votre nom de balise localement, vous devez vous rendre sur le chemin où vous avez créé la balise (chemin local). Signifie où vous avez placé vos objets. Tapez ensuite la commande:

git show --name-only <tagname>

Il affichera tous les objets sous ce nom de balise. Je travaille dans Teradata et l'objet signifie la vue, la table, etc.

Tanaya
la source
4

Vous pouvez répertorier toutes les balises existantes git tagou filtrer la liste avec git tag -l 'v1.1.*', où *agit comme un caractère générique. Il renverra une liste de balises marquées avec v1.1.

Vous remarquerez que lorsque vous appelez, git tagvous ne voyez pas le contenu de vos annotations. Pour les visualiser , vous devez ajouter -nà votre commande: git tag -n2.

$ git tag -l -n2

v1.0 Release version 1.0

v1.1 Release version 1.1

La commande répertorie toutes les balises existantes avec un maximum de 3 lignes de leur message de balise. Par défaut, -nne montre que la première ligne. Pour plus d'informations, assurez-vous de vérifier également cet article lié à la balise .

Nesha Zoric
la source
0

Pour qu'une interface graphique le fasse, je viens de découvrir que «gitk» prend en charge les vues nommées. Les vues ont plusieurs options pour sélectionner les validations. Un très pratique est une boîte pour sélectionner "Toutes les balises". Cela semble fonctionner pour moi de voir les balises.

OBJ
la source