Executar git tag --contains Commit
Nesta etapa, aprenderemos como usar o comando git tag --contains para encontrar quais tags contêm um commit específico. Isso é útil quando você deseja saber quais lançamentos ou versões do seu projeto incluem uma alteração específica.
Primeiro, vamos garantir que estamos no diretório do nosso projeto. Abra seu terminal e navegue até o diretório my-time-machine:
cd ~/project/my-time-machine
Agora, vamos criar alguns commits e tags para trabalhar. Adicionaremos um novo arquivo e faremos um commit:
echo "Another message for the future" > message2.txt
git add message2.txt
git commit -m "Add a second message"
Você deve ver uma saída semelhante a esta:
[master <commit-hash>] Add a second message
1 file changed, 1 insertion(+)
create mode 100644 message2.txt
Agora, vamos adicionar uma tag a este commit. Vamos chamá-la de v1.0:
git tag v1.0
Este comando não produz nenhuma saída, mas criou uma tag apontando para o commit mais recente.
Vamos fazer outro commit sem uma tag:
echo "A third message" > message3.txt
git add message3.txt
git commit -m "Add a third message"
Você deve ver uma saída semelhante a esta:
[master <commit-hash>] Add a third message
1 file changed, 1 insertion(+)
create mode 100644 message3.txt
Agora temos dois commits e uma tag. Vamos usar git log --oneline para ver nosso histórico de commits:
git log --oneline
Você deve ver algo como isto (os hashes dos commits serão diferentes):
<commit-hash> (HEAD -> master) Add a third message
<commit-hash> (tag: v1.0) Add a second message
<commit-hash> Send a message to the future
Observe que a tag v1.0 está associada ao commit "Add a second message".
Agora, vamos encontrar quais tags contêm o commit "Add a second message". Precisamos do hash do commit para isso. Na saída de git log --oneline, copie o hash do commit ao lado de (tag: v1.0).
Substitua <commit-hash> pelo hash real que você copiou e execute o seguinte comando:
git tag --contains <commit-hash>
Você deve ver v1.0 na saída, porque esta tag aponta diretamente para esse commit.
Agora, vamos tentar encontrar quais tags contêm o primeiro commit ("Send a message to the future"). Copie o hash do commit para esse commit de git log --oneline.
Substitua <first-commit-hash> pelo hash real e execute:
git tag --contains <first-commit-hash>
Você ainda deve ver v1.0 na saída. Isso ocorre porque v1.0 está em um commit que é um descendente do primeiro commit. A flag --contains verifica se o commit especificado é um ancestral do commit para o qual a tag aponta.
Este comando é muito útil quando você precisa determinar quais versões do seu software incluem uma correção de bug ou recurso específico.