Como listar todas as tags que contêm uma confirmação?

227

Essa pergunta é semelhante a Como listar todas as tags que apontam para um commit específico no git , mas com uma diferença: desejo procurar por todos os tags que contenham um commit específico na árvore de cada tag, não especificamente nos arquivos marcados na tag (nesse caso, apenas a alteração Makefile foi marcada).

atx
fonte
1
Você não pode marcar um arquivo específico - as tags apontam apenas para confirmações. Você pode editar sua pergunta com mais detalhes do problema que realmente está tentando resolver.
Mark Longair
Nota: no Windows, certifique-se de usar git 2.0.x (2014) se quiser git tag --containspara não falhar. Veja minha resposta abaixo
VonC

Respostas:

348
git tag --contains <commit>
amalloy
fonte
2
Eu tentei isso. Mas se a tag contiver apenas um arquivo, acredito que ela somente pesquisa nesse arquivo. Não procurará na árvore. Além disso, o repositório em que experimentei é tão grande que o git foi resgatado e recebeu o SIGKILL'ed.
atx
21
Tags não contêm arquivos. Eles são apenas marcadores para um commit. Dado isso, não acho que sua objeção faça sentido.
amalloy
Não deve estar me mostrando o commit por falta de memória nesse caso. Você sabe como eu posso superar isso?
atx 30/10
5
Existe alguma maneira de fazer isso com tags remotas? Semelhante ao ramo:git branch -r --contains <commit>
Mike
23

Observe que você precisa do git 2.0.x (terceiro trimestre de 2014) para listar todas as tags para um determinado commit, se você tiver um repositório grande

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

git tag --contains: evitar estouro de pilha

Em repositórios grandes, a implementação de recursão contains(commit, commit_list)pode resultar em um estouro de pilha. Substitua a recursão por um loop para corrigi-lo.

Esse problema é mais aparente no Windows do que no Linux, onde a pilha é mais limitada por padrão.

Veja também este tópico na lista msysGit .

VonC
fonte
9
Sem trocadilhos? ;-)
MikeSchinkel 8/12
3
@ MikeSchinkel Bem ... não intencional , pelo menos.
VonC 8/17/17
16
git tag --contains <sha1_hash> 

Deveria trabalhar

manojlds
fonte