¿Cómo enumerar todas las etiquetas que contienen un commit?

227

Esta pregunta es similar a Cómo enumerar todas las etiquetas que apuntan a una confirmación específica en git , pero con una diferencia: deseo buscar todas las etiquetas que contienen una confirmación específica dentro del árbol de cada etiqueta, no específicamente los archivos marcados en la etiqueta en sí (en este caso, solo se ha etiquetado el cambio de Makefile).

atx
fuente
1
No puede etiquetar un archivo en particular: las etiquetas solo apuntan a confirmaciones. Es posible que desee editar su pregunta con más detalles del problema que realmente está tratando de resolver.
Mark Longair
Nota: en Windows, asegúrese de usar git 2.0.x (2014) si desea git tag --containsque no se bloquee. Vea mi respuesta a continuación
VonC

Respuestas:

348
git tag --contains <commit>
amalloy
fuente
2
He intentado esto Pero si la etiqueta solo contiene un archivo, creo que solo busca a través de ese archivo. No buscará el árbol. Además, el repositorio que probé es tan grande que se rescató y se SIGKILL'ed.
atx
21
Las etiquetas no contienen archivos. Son solo marcadores para un commit. Dado eso, no creo que su objeción tenga sentido.
amalloy
No debe mostrarme el commit debido a la falta de memoria en ese caso. ¿Sabes cómo puedo superar esto?
atx
55
¿Hay alguna manera de hacer esto contra las etiquetas remotas? Similar a con ramas:git branch -r --contains <commit>
Mike
23

Tenga en cuenta que necesita git 2.0.x (Q3 2014) para enumerar todas las etiquetas para una confirmación determinada si tiene un repositorio grande

Ver commit cbc60b6 por Jean-Jacques Lafay ( lanfeust69) :

git tag --contains: evitar desbordamiento de pila

En repositorios grandes, la implementación de recursión contains(commit, commit_list)puede resultar en un desbordamiento de la pila. Reemplace la recursión con un bucle para solucionarlo.

Este problema es más evidente en Windows que en Linux, donde la pila está más limitada por defecto.

Vea también este hilo en la lista msysGit .

VonC
fuente
99
Sin juego de palabras? ;-)
MikeSchinkel
3
@MikeSchinkel Bueno ... al menos no intencional .
VonC
16
git tag --contains <sha1_hash> 

Deberia trabajar

manojlds
fuente