Artigo original: Git Tag Explained: How to List, Create, Remove, and Show Tags in Git

Tags permitem que os desenvolvedores marquem pontos de verificação importantes no decorrer do desenvolvimento de seus projetos. Por exemplo, as versões de lançamento de software podem receber tags. (por exemplo, v1.3.2). Elas, essencialmente, permitem que você dê a um commit um nome especial (uma tag).

Para exibir todas as tags criadas em ordem alfabética:

git tag

Para obter mais informações sobre uma tag:

git show v1.4

Existem dois tipos de tags:

Com anotações

git tag -a v1.2 -m "minha versão 1.4"

Leve

git tag v1.2

Elas diferem no modo como são armazenadas. Elas criam tags em seu commit atual.

Caso você queira colocar uma tag em um commit anterior, especifique a ID do commit que deseja marcar:

git tag -a v1.2 9fceb02

Os nomes das tags podem ser usados em vez de IDs do commit durante o check-out e o push dos commits para um repositório remoto.

Para mais informações (em inglês):

Você pode listar todas as tags disponíveis em um projeto com o comando git tag (note que elas aparecerão em ordem alfabética):

$ git tag
v1.0
v2.0
v3.0

Essa maneira de listar tags é ótima para projetos pequenos, mas projetos maiores podem ter centenas de tags. Assim, talvez seja necessário filtrá-las ao procurar um ponto importante no histórico. Você pode encontrar tags contendo caracteres específicos adicionando um -l ao comando git tag:

$ git tag -l "v2.0*"
v2.0.1
v2.0.2
v2.0.3
v2.0.4

Crie uma tag

Você pode criar dois tipos de tags: anotadas e leves. Elas são objetos concorrentes no banco de dados do GIT: elas recebem um checksum, solicitam uma mensagem (como os commits) e armazenam outros dados importantes, como nome, e-mail e data. Por outro lado, as tags leves não exigem uma mensagem nem armazenam outros dados, funcionando apenas como um ponteiro para um ponto específico no projeto.

Crie uma tag com anotações

Para criar uma tag com anotações, adicione -a nome_da_tag -m "mensagem" ao comando git tag:

$ git tag -a v4.0 -m "versão 4.0"
$ git tag
v1.0
v2.0
v3.0
v4.0

Como você pode ver, o -a especifica que você está criando uma tag com anotações, depois vem o nome_da_tag e, finalmente, o -m, seguido pela mensagem a ser armazenada no banco de dados Git.

Crie uma tag leve

As tags leves contêm apenas o checksum (nenhuma outra informação é armazenada). Para criar um, basta executar o comando git tag sem outras opções (os caracteres -lw no final do nome são usados para indicar tags leves, mas você pode marcá-los como quiser):

$ git tag v4.1-lw
$ git tag
v1.0
v2.0
v3.0
v4.0
v4.1-lw

Dessa vez, você não especificou uma mensagem ou outros dados relevantes. Portanto, a tag contém apenas o checksum referido.

Veja os dados da tag

Você pode executar o comando git show para exibir os dados armazenados em uma tag. No caso de tags com anotações, você verá os dados da tag e os dados do commit:

$ git show v4.0
tag v4.0
Tagger: John Cash <john@cash.com>
Date:   Mon Sat 28 15:00:25 2017 -0700

release version 4.0

commit da43a5fss745av88d47839247990022a98419093
Author: John Cash <john@cash.com>
Date:   Fri Feb 20 20:30:05 2015 -0700

  finished details

Se a tag que você está procurando for uma tag leve, você verá apenas os dados do commit referido:

$ git show v1.4-lw
commit da43a5f7389adcb9201ab0a289c389ed022a910b
Author: John Cash <john@cash.com>
Date:   Fri Feb 20 20:30:05 2015 -0700

  finished details

Colocando tags em commits antigos

Você também pode marcar commits passados usando git tag commit. Para fazer isso, você precisará especificar o checksum (ou pelo menos uma parte dele) na linha de comando.

Primeiro, execute git log para descobrir o checksum necessário:

$ git log --pretty=oneline
ac2998acf289102dba00823821bee04276aad9ca added products section
d09034bdea0097726fd8383c0393faa0072829a7 refactorization
a029ac120245ab012bed1ca771349eb9cca01c0b modified styles
da43a5f7389adcb9201ab0a289c389ed022a910b finished details
0adb03ca013901c1e02174924486a08cea9293a2 small fix in search textarea styles

Quando tiver o checksum de que precisa, adicione-o ao final da linha de criação da tag:

$ git tag -a v3.5 a029ac

Você verá que a tag foi adicionada corretamente ao executar git tag:

$ git tag
v1.0
v2.0
v3.0
v3.5
v4.0
v4.1-lw

Faça o push das tags

O Git não faz o push das tags por padrão ao executar o comando git push. Assim, para fazer o push das tags para um servidor, use o comando git push origin:

$ git push origin v4.0
Counting objects: 14, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (16/16), done.
Writing objects: 100% (18/18), 3.15 KiB | 0 bytes/s, done.
Total 18 (delta 4), reused 0 (delta 0)
To git@github.com:jcash/gitmanual.git
 * [new tag]         v4.0 -> v4.0

Você também pode usar a opção --tags para adicionar diversas tags ao mesmo tempo com o comando git push origin:

$ git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 160 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:jcash/gitmanual.git
 * [new tag]         v4.0 -> v4.0
 * [new tag]         v4.1-lw -> v4.1-lw

Faça o check-out das tags

Você pode usar o comando git checkout para fazer o check-out de uma tag como você normalmente faz. É necessário, porém, lembrar que isso resultará em um estado HEAD separado.

$ git checkout v0.0.3
Note: checking out 'v0.0.3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

Exclua uma tag

Você se verá em situações onde vai querer excluir tags. Existe um comando muito útil para esses casos:

$ git tag --delete v0.0.2
$ git tag
v0.0.1
v0.0.3
v0.0.4

Para mais informações (em inglês):

Fontes (em inglês):

Documentação do Git: tags