Tagging no Git é uma ótima forma de indicar lançamentos de versões específicas de seu código, ou talvez se você precisa de uma forma para se referir exatamente a um commit em seu histórico por alguma razão. Este post vai mostrar o jeito certo (e errado) de usar tag
no git.
Provavelmente a melhor forma de descrever uma tag é um post-it que se refere a um commit. Ele contém um nome, algo como v1.0.0
ou producao
, e uma mensagem também se você quiser. Git para Cientistas da Computação visualiza uma tag como algo:
Então, como se cria uma tag? Só git tag v1.0.0
certo? ERRADO. Você geralmente não quer fazer isso. De fato, alguns sugerem que esse comando faz a coisa errada por padrão. Sem argumentos, git tag
cria uma tag leve que é basicamente um branch que nunca move. Tags leves são úteis, talvez para marcar uma versão boa (ou ruim) conhecida, ou um punhado de commits que você precisará usar no futuro. Todavia, você provavelmente não quer fazer um push desse tipo de tags.
Normalmente, você quer pelo menos passar a opção -a
para criar uma tag não assinada, ou assinar uma tag com sua chave GPG via as opções -s
ou -u <key-id>
. Uma vez que isso foi feito você pode usar git descrive
para descobrir quantos commits você criou desde a última tag ou da última tag dada. Git-fu tem um ótimo tutorial de como usar esse comando.
Então vamos criar uma nova tag e ver como nós podemos nos referir a ela mesmo depois que o commit foi feito, então nós faremos um push para um remoto. Isso é bem mais fácil do que você pensa.
$ git tag -a v1.0.0 -m "Criando a primeira versão oficial." $ git show v1.0.0 tag v1.0.0 Tagger: Nick Quaranto <nick@quaran.to> Date: Tue Feb 3 20:37:45 2009 -0500 Criando a primeira versão oficial. commit a8d1b55c5d4bdec843d9942cabf1b678bc1d4eed Merge: 00b9675... 1b487b8... Author: Nick Quaranto <nick@quaran.to> Date: Sun Nov 30 00:41:08 2008 -0500 Merge branch 'master' of git@github.com:qrush/config $ git describe --tags v1.0.0 $ touch test $ git add test $ git commit -am "Adicionando arquivos de teste" Created commit a7aafb8: Adicionando arquivos de teste 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test $ git describe --tags v1.0.0-1-ga7aafb8 $ git push --tags Counting objects: 40, done. Compressing objects: 100% (37/37), done. Writing objects: 100% (40/40), 29.32 KiB, done. Total 40 (delta 15), reused 9 (delta 2) To git@github.com:qrush/config.git * [new tag] v1.0.0 -> v1.0.0
O segundo comando describe
nos mostra que nós temos um commit após aonde a última tag foi feita. Este é um jeito fácil de descobrir quanto trabalho foi feito desde o último commit. Também, a opção --tags
foi usada para fazer o push, mas o push para a tag poderia ter sido feito com git push origin : v1.0.0
. No GitHub (ou em seu remoto) você deveria ver a tag que foi feito o push:
Outra nota, se você fez um push de tags que você quer mover ou renomear, o Git fará com que isso seja ridiculamente incômodo de ser feito. Confira na manpage para uma explicação de o porque de isso ser complicado e que deveria ser feito com cautela.
Se você tem uma forma única de integrar tags no seu workflow com GIT, deixe-nos saber pelos comentários ou até envie uma dica para que outros possam aprender!