Edit : Jakub Narębski tem mais git-fu. O seguinte comando muito mais simples funciona perfeitamente:
git describe --tags
(Ou sem o --tags
se você fez check-out de uma tag anotada. Minha tag é leve, então preciso das tags -.)
resposta original a seguir:
git describe --exact-match --tags $(git log -n1 --pretty='%h')
Alguém com mais git-fu pode ter uma solução mais elegante ...
Isso aproveita o fato de que git-log
relata o log a partir do que você fez check-out. %h
imprime o hash abreviado. Em seguida, git describe --exact-match --tags
localiza a tag (leve ou anotada) que corresponde exatamente a essa confirmação.
A $()
sintaxe acima pressupõe que você esteja usando o bash ou similar.
git describe
mostraria o nome da tag se você estiver exatamente na tag (anotada) ou,<tag>-<n>-g<shortened sha-1>
se não estiver, onde<n>
está o número de confirmações desde<tag>
.--exact-match
à minha resposta segundos antes do seu comentário. É bom saber que você pode removê-lo e ainda obter boas informações de entradas mais difusas.git rev-parse HEAD
é uma solução melhor do quegit log -n1 --pretty='%h'
... mas por que você não pode simplesmente escreverHEAD
(ou nada, comogit describe
padrão no HEAD)?Isso funcionou para mim
git describe --tags --abbrev=0
fonte
Mostrar todas as tags no HEAD atual (ou confirmar)
fonte
git describe
é um comando de porcelana , que você deve evitar:http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html
Em vez disso, usei:
fonte
^0
para confirmações que correspondem a tags (por exemplo, para tags que1.0
ele gera1.0^0
). Existe alguma maneira de ter apenas saída Git1.0
, ou devo usar o sed para isso?Quando você faz check-out de uma tag, você tem o que chamamos de "cabeça desanexada" . Normalmente, a confirmação HEAD do Git é um ponteiro para o ramo que você fez check-out no momento. No entanto, se você verificar algo diferente de uma filial local (uma tag ou uma filial remota, por exemplo), terá uma "cabeça desanexada" - você não está realmente em nenhuma filial. Você não deve fazer nenhum commit enquanto estiver em uma cabeça desanexada.
Não há problema em verificar uma tag se você não quiser fazer edições. Se você está apenas examinando o conteúdo dos arquivos ou deseja criar seu projeto a partir de uma tag, não há problema em
git checkout my_tag
trabalhar com os arquivos, desde que você não faça nenhum commit . Se você deseja iniciar a modificação de arquivos, crie uma ramificação com base na tag:criará um novo ramo chamado
my_tag_branch
começando emmy_tag
. É seguro confirmar alterações neste ramo.fonte
git log --decorate
Isso informará o que os árbitros estão apontando para o commit do check-out atualmente.
fonte