Comment obtenir le dernier Git tag mise en correspondance des critères de
J'ai besoin de commande Git à obtenir/trouver la dernière balise de départ avec 'v' pour obtenir les dernières versioning commit (je suis à l'aide de balises avec v lettre au début de la balise de la prochaine version de l'application (exemple: v0.9.1 beta).
Est-il un moyen de le faire?
- Pouvez-vous utiliser
git describe
? - Yep .. git décrire --match v* était ce dont j'avais besoin. Je Vous Remercie.
- Quelqu'un peut merci d'éditer le titre, car, pour cela, il n'est pas nécessaire pour utiliser une expression régulière. Aussi tous la réponse juste utiliser le match et "glob" modèle. thx.
- Je suis à la recherche de la réponse à la question dans le titre (regex pas glob)!
- Peut-être ajouter une prime 😉
- Il vous allez
- Renommer le titre serait une option. Je répondu à la place...
Vous devez vous connecter pour publier un commentaire.
Je suis en utilisant la commande suivante pour cette:
Il permettra également de modifier la version si vous avez fait quelque chose avec l'arbre source depuis votre dernière balise de version.
Veuillez noter que ceci est pas une regex mais un glob, mais travaille pour l'exemple fourni.
--abbrev=0
.git describe
doc dit que--match
prend une goutte, pas une regex.v1.0.0
et pas seulementv1234
. J'ai ajouté une note pour préciser que.man git-describe
.--tags
doit être ajouté à la fin. Autrement que annoté balises seront affichés.KARASZI István réponse déjà explique comment trouver les balises correspondant à un glob, qui est généralement assez fine. Si vous avez besoin d'une véritable RegEx si:
--abrev=0
permettrait d'atteindre), ajouter| cut -d"-" -f1
--long
comportement de la sortie d'un exactement la balise correspondante, y compris le-0-hash
partie, ajouter| sed -e's/-0-.*$//'
à la place.La question de l'exemple de la balise serait probablement utiliser une Regex
^v\d+\.\d+\.\d+\D*$
(bien que le\D*$
peut être facultatif).git describe
est exécuté pour chaque balise correspondant à l'expression rationnelle.Aussi avec git décrire vous pourriez obtenir la dernière balise et pas seulement accessible à partir de la TÊTE avec :
git describe --match "v*" --abbrev=0 --tags $(git rev-list --tags --max-count=1)
Tout en une seule regex
--match "v[0-9]*"
est assez ici, sachez que Git 2.13 (T2 2017) s'améliorer:Voir s'engager 77d21f2, s'engager 43f8080, s'engager 96415b4, s'engager 290be66, s'engager 4a68748 (18 Jan 2017) par Jacob Keller (
jacob-keller
).(Fusionnés par Junio C Hamano --
gitster
-- dans s'engager 1b32498, 27 Février 2017)Vous maintenant peut avoir plusieurs correspond au motif:
Et vous avez également une exclure motif (ou plusieurs) maintenant!
De l'utiliser.
v
, donc ça sera la liste de tous les mots qui ne sont pas seulement les versionsLe problème avec l'aide de
git describe
que les autres réponses n'est quegit describe
vous montrera les balises qui sont accessibles à partir de la TÊTE (ou le commit que vous spécifiez.)Imaginez que vous avez 3 balises, v1, v2, et v3. Si la TÊTE est à un point entre v2 et v3,
git describe
serait de retour v2 plutôt que la v3.Si vous voulez vraiment la dernière balise, tout d'abord, vous devez annoté étiquettes léger balises n'ont pas de date de métadonnées.
Ensuite cette commande va le faire:
git for-each-ref --sort=-taggerdate --count=1 refs/tags/v*
- Je utiliser
git tag
interprète le motif de glob. Si vous ne pouvez pas spécifier une pleine soufflé regex. Il suffit d'utiliser un minimum glob (v*) ou même pas de glob à tous. Vous recevrez plus d'une balise correspondante dans l'ordre de tri (le plus élevé tag version première) et vous serez en mesure de regex la sortie par la suite.Quelque chose de plus complexe serait le long des lignes de: