11. Adicionando tags a versões
Metas
- Aprender como adicionar tags a commits para referenciamento futuro.
Acho que você concordará que trabalhar diretamente com hashes é simplesmente inconveniente. Não seria ótimo se você pudesse rotular commits específicos com nomes legíveis por humanos? Dessa forma, você poderia ver claramente os marcos importantes no histórico do projeto. Além disso, você poderia navegar facilmente para uma versão específica do projeto pelo seu nome. É para isso que servem as tags no Git.
Vamos chamar a versão atual do nosso página hello.hml
de versão 1: v1
.
01 Criando a tag do primeiro
Execute
git tag v1
git log
Resultado
$ git tag v1
$ git log
b7614c1 2023-11-28 | Added HTML header (HEAD -> main, tag: v1) [Alexander Shvets]
46afaff 2023-11-28 | Added standard HTML page tags [Alexander Shvets]
78433de 2023-11-28 | Added h1 tag [Alexander Shvets]
5836970 2023-11-28 | Initial commit [Alexander Shvets]
Agora, a versão atual da página é conhecida como v1
.
02 Tags em versões antigas
Vamos marcar a versão anterior à versão atual com o nome v1-beta
. Antes de tudo, vamos verificar a versão anterior. Em vez de procurar o hash, usaremos a notação ^
, especificamente v1^
, indicando o commit anterior a v1
.
Se a notação
v1^
lhe causar algum problema, você também pode tentarv1~1
, que fará referência à mesma versão. A notaçãoV~N
significa "a N-ésima versão anterior a V" ou, no caso dev1~1
, a primeira versão anterior av1
.
Execute
git checkout v1^
cat hello.html
Resultado
$ git checkout v1^
Note: switching to 'v1^'.
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 switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 46afaff Added standard HTML page tags
$ cat hello.html
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>
Essa é a versão com as tags <html>
e <body>
, mas sem <head>
. Vamos fazer dessa a versão v1-beta
.
Execute
git tag v1-beta
git log
Resultado
$ git tag v1-beta
$ git log
46afaff 2023-11-28 | Added standard HTML page tags (HEAD, tag: v1-beta) [Alexander Shvets]
78433de 2023-11-28 | Added h1 tag [Alexander Shvets]
5836970 2023-11-28 | Initial commit [Alexander Shvets]
03 Acessando através do nome da tag
Agora tente executar um checkout entre as duas versões com tags.
Execute
git checkout v1
git checkout v1-beta
Resultado
$ git checkout v1
Previous HEAD position was 46afaff Added standard HTML page tags
HEAD is now at b7614c1 Added HTML header
$ git checkout v1-beta
Previous HEAD position was b7614c1 Added HTML header
HEAD is now at 46afaff Added standard HTML page tags
04 Vendo tags com o comando tag
Você pode ver todas as tags usadas usando o comando git tag
.
Execute
git tag
Resultado
$ git tag
v1
v1-beta
05 Vendo tags nos logs
Você também pode encontrar as tags no log.
Execute
git log main --all
Resultado
$ git log main --all
b7614c1 2023-11-28 | Added HTML header (tag: v1, main) [Alexander Shvets]
46afaff 2023-11-28 | Added standard HTML page tags (HEAD, tag: v1-beta) [Alexander Shvets]
78433de 2023-11-28 | Added h1 tag [Alexander Shvets]
5836970 2023-11-28 | Initial commit [Alexander Shvets]
Você pode ver as tags (v1
e v1-beta
) listadas no log juntamente com o nome do branch (main
). O HEAD
mostra o commit em que você está atualmente (v1-beta
).