Como listar todas as tags Git?

675

No meu repositório, criei tags usando os seguintes comandos.

git tag v1.0.0 -m 'finally a stable release'
git tag v2.0.0 -m 'oops, there was still a major bug!'

Como você lista todas as tags no repositório?

Léo Léopold Hertz 준영
fonte

Respostas:

953
git tag

deve ser suficiente. Veja a git tagpágina de manual


Você também tem:

git tag -l <pattern>

Listar tags com nomes que correspondam ao padrão fornecido (ou todos, se nenhum padrão for fornecido).
Digitar "tag git" sem argumentos, também lista todas as tags.


Mais recentemente (" Como classificar tags git? ", Para Git 2.0+)

git tag --sort=<type>

Classifique em uma ordem específica.

O tipo suportado é:

  • " refname" (ordem lexicográfica),
  • " version:refname" ou " v:refname" (os nomes das tags são tratados como versões).

Anexe "-" para reverter a ordem de classificação.


Isso lista os dois:

  • tags anotadas : objetos completos armazenados no banco de dados Git. Eles estão somados; conter o nome, o email e a data do marcador; ter uma mensagem de marcação; e pode ser assinado e verificado com o GNU Privacy Guard (GPG).
  • tags leves : ponteiro simples para uma confirmação existente

Nota: o artigo git ready sobre marcação reprova a marcação leve.

Sem argumentos, a tag git cria uma tag "leve" que é basicamente um ramo que nunca se move.
Tags leves ainda são úteis, talvez para marcar uma versão boa (ou ruim) conhecida ou várias confirmações que talvez você precise usar no futuro.
No entanto, você provavelmente não deseja enviar esses tipos de tags .

Normalmente, você deseja passar pelo menos a opção -a para criar uma marca não assinada ou assinar a marca com sua chave GPG por meio das opções -s ou -u.


Dito isto, Charles Bailey ressalta que um ' git tag -m "..."' na verdade implica uma tag (opção ' -a') (não assinada ) e não uma etiqueta leve. Então você é bom com seu comando inicial.


Isso difere de:

git show-ref --tags -d

Que lista as tags com seus commits (consulte " Lista de tags do Git, exiba hashes de commit sha1 ").
Observe a -dordem para desreferenciar o objeto de marcação anotado (que possui seu próprio commit SHA1) e exibir o commit marcado real.

Da mesma forma, git show --name-only <aTag>listaria a tag e o commit associado.

VonC
fonte
6
Provavelmente vale a pena acrescentar que -m ou -F implica -a (se não -a, -s ou -u forem fornecidos explicitamente. Você não pode ter uma mensagem de tag sem criar um objeto de tag 'adequado'.
CB Bailey
1
Nota para si mesmo: com este voto positivo, passo 800000 (31 de agosto de 2018) no Stack Overflow, um ano e um mês após atingir 700000 (6 de agosto de 2017) .
VonC 31/08/19
190

Para listar tags, prefiro:

git tag -n

O -nsinalizador exibe a primeira linha da mensagem de anotação junto com a tag ou a primeira linha de mensagem de confirmação, se a tag não estiver anotada.

Você também pode fazer git tag -n5para mostrar as 5 primeiras linhas da anotação.

finn
fonte
48

Também git show-refé bastante útil, para que você possa associar diretamente as tags aos commits correspondentes :

$ git tag
osgeolive-6.5
v8.0
...

$ git show-ref --tags
e7e66977c1f34be5627a268adb4b9b3d59700e40 refs/tags/osgeolive-6.5
8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 refs/tags/v8.0
...
Campa
fonte
1
Acostumado com o Mercurial, hg tagseu gosto que git show-refme dá a etiqueta E a revisão.
Justin Justin
34

E aqui está como você encontra as tags remotas:

git ls-remote --tags origin

Dimitri Dewaele
fonte
15

Tente fazê- git taglo deve ser suficiente, se não tentar fazê git fetch-lo git tag.

toto
fonte
4
Eu acho que o que ele quer dizer é o seguinte: Executar git tagcomando deve ser suficiente se você quiser apenas ver uma lista de tags disponíveis. Se você não conseguir ver algumas tags que acredita existir no controle remoto, as tags locais podem não estar sincronizadas com o controle remoto. Nesse caso, busque as últimas referências / cabeças do controle remoto primeiro git fetch, seguido pelo atual git tag. Eu costumo executar uma linha como esta: $ git fetch -p && git tagsó para ter certeza de que estou olhando o melhor e mais recente.
Demisx 29/05
11

Listar as tags disponíveis no Git é simples. Basta digitar git tag(com opcional -lou --list).

$ git tag
v5.5
v6.5

Você também pode procurar por tags que correspondam a um padrão específico.

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2

Obtendo a tag mais recente no repositório git

O comando localiza a tag mais recente que pode ser acessada a partir de uma confirmação. Se a tag apontar para a confirmação, somente a tag será mostrada. Caso contrário, ele sufocará o nome da tag com o número de confirmações adicionais na parte superior do objeto marcado e o nome abreviado do objeto da confirmação mais recente.

git describe

Com --abbrevset para 0, o comando pode ser usado para encontrar o mais próximo tagnamesem nenhum sufixo:

git describe --abbrev=0

Outros exemplos:

git describe --abbrev=0 --tags # gets tag from current branch
git describe --tags `git rev-list --tags --max-count=1` // gets tags across all branches, not just the current branch

Como remover tags git locais que não existem no controle remoto

Para simplificar, se você estiver tentando fazer algo assim git fetch -p -t, não funcionará começando com a versão git 1.9.4.

No entanto, existe uma solução simples que ainda funciona nas versões mais recentes:

git tag -l | xargs git tag -d  // remove all local tags
git fetch -t                   // fetch remote tags
Lyes CHIOUKH
fonte
A lista rev comando relacionado me deu uma lista, mas terminou em um erro:v0.1.0-rc1 fatal: No tags can describe '5db7534...4a94'. Try --always, or create some tags.
not2qubit
10

Para ver detalhes sobre a última tag disponível, às vezes uso:

git show `git describe` --pretty=fuller
Andrei Sura
fonte
6

Se você quiser verificar o nome da sua marca localmente, precisará ir para o caminho em que criou a marca (caminho local). Significa onde você colocou seus objetos. Em seguida, digite o comando:

git show --name-only <tagname>

Ele mostrará todos os objetos com esse nome de tag. Estou trabalhando no Teradata e objeto significa visualização, tabela etc.

Tanaya
fonte
4

Você pode listar todas as tags existentes git tagou filtrar a lista com git tag -l 'v1.1.*', onde *atua como um curinga. Ele retornará uma lista de tags marcadas com v1.1.

Você notará que, quando liga git tag, não consegue ver o conteúdo de suas anotações. Para visualizá-los você deve adicionar -nao seu comando: git tag -n2.

$ git tag -l -n2

v1.0 Release versão 1.0

v1.1 Release versão 1.1

O comando lista todas as tags existentes com no máximo 3 linhas de sua mensagem. Por padrão, -nmostra apenas a primeira linha. Para obter mais informações, verifique também este artigo relacionado a tags .

Nesha Zoric
fonte
0

Para uma GUI fazer isso, acabei de descobrir que o 'gitk' suporta visualizações nomeadas. As visualizações têm várias opções para selecionar confirmações. Uma prática é uma caixa para selecionar "Todas as tags". Isso parece funcionar para mim ver as tags.

OBJ
fonte