Come elencare tutti i tag che contengono un commit?


227

Questa domanda è simile a Come elencare tutti i tag che puntano a un commit specifico in git , ma con una differenza: desidero cercare tutti i tag che contengono un commit specifico all'interno dell'albero di ogni tag, non specificamente i file contrassegnati nel tag stesso (in questo caso, è stata taggata solo la modifica del Makefile).


1
Non è possibile contrassegnare un determinato file: i tag indicano solo commit. Potresti voler modificare la tua domanda con maggiori dettagli sul problema che stai davvero cercando di risolvere.
Mark Longair,


Nota: su Windows, assicurarsi di utilizzare git 2.0.x (2014), se si desidera git tag --containsper non mandare in crash. Vedi la mia risposta di seguito
VonC,

Risposte:


348
git tag --contains <commit>

2
Ci ho provato Ma se il tag contiene solo un file, credo che cerchi solo attraverso quel file. Non cercherà l'albero. Inoltre, il repository su cui l'ho provato è così ingombrante che è stato salvato su SIGKILL.
atx,

21
I tag non contengono file. Sono solo dei marker per un commit. Detto questo, non credo che la tua obiezione abbia senso.
amalloy,

Non deve mostrarmi il commit a causa della mancanza di memoria in quel caso. Sai come posso superare questo?
atx,

5
C'è un modo per farlo con i tag remoti? Simile con le filiali:git branch -r --contains <commit>
Mike

23

Nota che hai bisogno di git 2.0.x (Q3 2014) per elencare tutti i tag per un certo commit se hai un repository di grandi dimensioni

Vedi commit cbc60b6 di Jean-Jacques Lafay ( lanfeust69) :

git tag --contains: evitare lo overflow dello stack

In repository di grandi dimensioni, l'implementazione della ricorsione di contains(commit, commit_list)può comportare un overflow dello stack. Sostituisci la ricorsione con un anello per risolverlo.

Questo problema è più evidente su Windows che su Linux, dove lo stack è più limitato per impostazione predefinita.

Vedi anche questo thread nell'elenco msysGit .


9
Nessun gioco di parole previsto? ;-)
MikeSchinkel l'

3
@MikeSchinkel Beh ... non intenzionale , almeno.
VonC,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.