
O que é uma tag do Git?
- VersionDude
- guides
- 7 min de leitura
Uma tag do Git é uma referência com nome que aponta para um commit específico, usada sobretudo para marcar versões e releases - a diferença entre tag e ramo, tags leves e anotadas.
Uma tag do Git é uma referência com nome que aponta para um commit específico de um repositório. Enquanto um commit é identificado por um hash longo e difícil de memorizar, uma tag dá a esse ponto exato da história um nome curto e legível. As tags são usadas sobretudo para marcar pontos de release, de modo que um nome como v1.0.0 se refere ao estado preciso do código que foi publicado como essa versão.
A diferença essencial entre uma tag e um ramo é que uma tag não se move. Um ramo é um ponteiro que avança sempre que lhe adicionas um novo commit, seguindo sempre o trabalho mais recente. Uma tag é fixa: uma vez associada a um commit, continua a apontar para esse mesmo commit mesmo que o desenvolvimento prossiga para além dele. É exatamente o que se pretende para uma release, porque o significado de v1.0.0 nunca deve mudar depois de publicado.
Tags leves versus tags anotadas

O Git suporta dois tipos de tags: tags leves e tags anotadas. Uma tag leve é pouco mais do que um nome que aponta diretamente para um commit, sem informação adicional guardada ao lado. É rápida de criar e funciona bem como marcador pessoal, mas não guarda qualquer registo de quem a criou nem porquê.
Uma tag anotada é guardada como um objeto completo na base de dados do Git. Regista o nome da pessoa que criou a tag, a data em que foi feita e uma mensagem de tag, tal como um commit regista o seu autor e a sua mensagem. As tags anotadas também podem ser assinadas com GPG, o que permite a outros verificar que uma tag de release veio realmente de ti. Para releases públicas, as tags anotadas são geralmente a opção recomendada por causa destes metadados adicionais e da possibilidade de as assinar.
Criar e enviar tags
Criar tags é simples. Executar git tag com um nome e sem outras opções cria uma tag leve no commit atual. Adicionar a opção -a, como em git tag -a v1.0.0 -m 'Release 1.0.0', cria uma tag anotada com uma mensagem. Também podes marcar um commit mais antigo passando o seu hash no fim do comando, o que é útil quando percebes depois que um commit em particular era o verdadeiro ponto de release.
- Uma tag nomeia um commit específico; ao contrário de um ramo, não se move depois de definida.
- Tag leve: apenas um nome que aponta para um commit, sem metadados adicionais.
- Tag anotada: um objeto completo que guarda autor, data e mensagem, e pode ser assinada com GPG.
- Cria-se com git tag v1.0.0 (leve) ou git tag -a v1.0.0 -m '...' (anotada).
- As tags não são enviadas por predefinição: manda-as com git push origin <tag> ou git push --tags.
- As tags marcam releases, muitas vezes como SemVer vX.Y.Z, e disparam frequentemente CI/CD e páginas de release.
Um ponto que surpreende os principiantes é que as tags não são partilhadas automaticamente. Quando executas git push, os teus ramos são atualizados no remoto, mas as tuas tags permanecem locais a menos que as envies explicitamente. Envias uma única tag com git push origin seguido do nome da tag, ou mandas todas as tuas tags de uma vez com git push --tags. Esquecer este passo é uma razão comum para que uma tag de release apareça na máquina de um programador mas falte no repositório partilhado.
Tags, versionamento e automação de releases
As tags encaixam naturalmente num esquema de versões. Muitos projetos seguem o versionamento semântico, em que uma versão tem a forma MAIOR.MENOR.CORREÇÃO, e cada release é capturada por uma tag correspondente como v2.4.1. Como a tag é imutável, qualquer pessoa pode mais tarde extrair essa tag exata e reconstruir o código tal como estava para essa versão, o que constitui a base das releases reproduzíveis.
As tags também impulsionam grande parte da automação. As pipelines de integração e implantação contínuas são frequentemente configuradas para disparar quando uma nova tag é enviada, de modo que marcar um commit como v1.2.0 constrói, testa e publica automaticamente essa versão. As plataformas que alojam repositórios transformam muitas vezes as tags em páginas de release, anexando notas e artefactos transferíveis a cada versão marcada. Assim, um pequeno ponteiro imutável torna-se a âncora de todo um processo de release.
Trabalhar com tags em segurança
Como uma tag é apenas uma referência, é barata e segura de manusear. Listar tags, inspecionar o que diz uma tag anotada ou extrair o código numa dada tag são todas operações de só leitura que não perturbam o teu trabalho em curso. Eliminar uma tag localmente também é simples, embora eliminar uma que já foi enviada e usada por outros deva ser feito com cuidado, pois pessoas e pipelines podem já depender dela.
Em resumo
Em resumo, uma tag do Git é um rótulo estável sobre um momento do histórico do teu projeto. As tags leves são referências pessoais rápidas, enquanto as tags anotadas trazem uma autoria, uma mensagem e assinaturas opcionais que as tornam adequadas para releases públicas. Combinadas com um esquema de versões e enviadas para o remoto partilhado, as tags transformam um hash de commit impossível de memorizar numa referência duradoura e verificável para uma versão específica do teu software.



Como uma tag é apenas uma referência, é barata e segura de manusear. Listar tags, inspecionar o que diz uma tag anotada ou extrair o código numa dada tag são todas operações de só leitura que não perturbam o teu trabalho em curso. Eliminar uma tag localmente também é simples, embora eliminar uma que já foi enviada e usada por outros deva ser feito com cuidado, pois pessoas e pipelines podem já depender dela.