Comment lister toutes les balises contenant un commit?

227

Cette question est similaire à Comment lister toutes les balises pointant vers un commit spécifique dans git , mais avec une différence: je souhaite rechercher toutes les balises qui contiennent un commit spécifique dans l'arborescence de chaque balise, pas spécifiquement les fichiers marqués dans la balise lui-même (dans ce cas, seule la modification du Makefile a été balisée).

atx
la source
1
Vous ne pouvez pas marquer un fichier particulier - les balises pointent uniquement vers les validations. Vous voudrez peut-être modifier votre question avec plus de détails sur le problème que vous essayez vraiment de résoudre.
Mark Longair
Remarque: sous Windows, assurez - vous d'utiliser git 2.0.x (2014) si vous voulez git tag --containsde ne pas tomber en panne. Voir ma réponse ci
VonC

Réponses:

348
git tag --contains <commit>
amalloy
la source
2
J'ai essayé ça. Mais si la balise ne contient qu'un seul fichier, je crois qu'elle ne recherche que dans ce fichier. Il ne recherchera pas l'arbre. De plus, le référentiel sur lequel j'ai essayé est si gros git sous caution et a été SIGKILL.
2011
21
Les balises ne contiennent pas de fichiers. Ce ne sont que des marqueurs pour un commit. Cela dit, je ne pense pas que votre objection soit logique.
amalloy
Il ne doit pas me montrer le commit à cause du manque de mémoire dans ce cas. Savez-vous comment je peux surmonter cela?
2011
5
Existe-t-il un moyen de le faire contre les balises distantes? Similaire aux succursales:git branch -r --contains <commit>
Mike
23

Notez que vous avez besoin de git 2.0.x (Q3 2014) pour répertorier toutes les balises pour un certain commit si vous avez un grand dépôt

Voir commit cbc60b6 de Jean-Jacques Lafay ( lanfeust69) :

git tag --contains: éviter le débordement de pile

Dans les grands référentiels, l'implémentation de récursivité de contains(commit, commit_list)peut entraîner un débordement de pile. Remplacez la récursivité par une boucle pour la corriger.

Ce problème est plus apparent sous Windows que sous Linux, où la pile est plus limitée par défaut.

Voir aussi ce fil sur la liste msysGit .

VonC
la source
9
Sans jeu de mots? ;-)
MikeSchinkel
3
@MikeSchinkel Eh bien ... du moins pas intentionnel .
VonC
16
git tag --contains <sha1_hash> 

devrait marcher

manojlds
la source