Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] para criar uma tag -a , não tem que indicar onde o head vai nomear a versão?

na aula só foi colocado git log -n 2, isso já indica pra tag -a, que será nessas 2 ultimas commits o adicionamento da release? não precisa colocar o head em cima da commit para nomear que iniciando dela que vai ser a versão posta?

3 respostas
solução!

Oi, Francisco! Tudo bem?

Quando executamos o comando git log -n 2, é apresentado uma parte do nosso histórico de commits, o qual se restringe apenas a mostrar a quantidade de commits determinada no comando (nesse caso, dois). Contudo, esse procedimento não afirma ao Git quais commits desejamos adicionar à tag.

A existência do HEAD na criação de uma tag é necessário, tendo em vista que, a partir disso, são selecionados os commits que irão compor a versão. Com o comando git tag, o ponteiro do HEAD já está, de maneira implícita, apontando para o commit mais recente, o que significa dizer que nós não precisamos realizar tal procedimento.

Caso não quiséssemos criar a tag a partir do último commit e sim a partir de outro, seria preciso redirecionar o HEAD, migrando o ponteiro para o commit desejado.

Para fazer isso, precisamos conhecer o hash do commit que receberá o ponteiro do HEAD. No Git, o hash é um valor que referencia cada commit feito, para visualizá-lo e copiá-lo, podemos executar o comando abaixo:

git log --oneline

A partir dele, veremos todo o histórico dos nossos commits de uma forma mais reduzida e de fácil visualização. Observe a partir de qual commit você deseja criar a tag e copie seu hash, localizado na lateral esquerda de cada linha.

Veja um exemplo abaixo:

Início da transcrição. Recorte de captura de tela do Git Bash. A imagem tem quatro linhas. A primeira linha contém um símbolo de cifrão e o comando "git log --oneline"; a segunda contém o texto "280a76c (HEAD seta-apontando para-a-direita  master) terceiro commit"; a terceira tem o texto "d25c285 segundo commit"; a quarta linha tem o texto "f9efe54 primeiro commit". Fim da transcrição.

Observe que, na imagem, HEAD está apontando para o último commit, com a mensagem “terceiro commit”. Contudo, queremos criar a tag a partir de “segundo commit”, que está logo abaixo. Logo, precisamos selecionar e copiar seu hash d25c285 e digitar o seguinte comando:

git checkout d25c285

O comando checkout nos possibilita "navegar" por diferentes lugares dentro do nosso próprio repositório. Portanto, desse modo “voltamos no tempo” e o HEAD agora está apontando para o segundo commit, observe:

Início da transcrição. Recorte de captura de tela do Git Bash. A imagem tem três linhas. A primeira linha tem um símbolo de cifrão e o comando "git log --oneline"; a segunda possui o texto "d25c285 (HEAD) segundo commit"; a terceira tem o texto "f9efe54 primeiro commit". Fim da transcrição.

Feito isso, já podemos criar a tag a partir do comando abaixo:

git tag -a v0.1.0 -m "Mensagem descritiva sobre a tag"

Ao criar uma tag, é interessante adicionar a flag -a, a qual determina que essa tag será do tipo "annotated" (anotada) e, portanto, levará consigo algumas informações acerca da ação feita, como nome, e-mail, arquivos modificados, etc. Um outro ponto sobre o comando acima é o uso da flag -m. Por meio dela, podemos adicionar uma mensagem descritiva sobre a criação da nova tag!

Para finalizar, podemos retornar ao estado mais recente da nossa aplicação, assim:

git checkout master

Se executarmos novamente git log --oneline, veremos que a tag já foi criada:

Início da transcrição. Recorte de captura de tela do Git Bash. A imagem tem quatro linhas. A primeira linha contém um símbolo de cifrão e o comando "git log --oneline"; a segunda tem o texto "280a76c (HEAD seta-apontando para-a-direita  master) terceiro commit"; a terceira tem o texto "d25c285 (tag: v0.1.0) segundo commit"; a quarta tem o texto "f9efe54 primeiro commit". Fim da transcrição.

Caso queira enviá-la para o repositório do projeto no Github, será necessário fazer um push, como mostro abaixo:

git push origin v0.1.0

Observação: note que, após o origin foi escrito o nome dado à tag. Isso é importante para que ela seja enviada ao repositório com êxito. Caso não se lembre do nome, existe um comando que nos apresenta todas as tags já feitas — com ele, podemos consultá-lo. A seguir, o comando:

git tag

A partir da explicação acima, percebemos que, caso deseja-se criar uma tag a partir das últimas modificações feitas, não precisamos lidar com o HEAD, visto que, implicitamente, ele já está presente na criação da tag. Por outro lado, se quiséssemos limitar os commits da tag, realocar o HEAD, o uso do git checkout, seria necessário.

Francisco, espero ter ajudado! Caso surjam dúvidas após minha explicação ou ao decorrer dos seus estudos, fico à disposição para ajudá-lo. Forte abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Muito obrigado Andrieli, me ajudou bastante a resolver um problema semelhante!

A sua explicação foi bem completa Andrieli, muito obrigado!