Como ver tags remotas?

136

No Atlassian SourceTree, como saber quais tags são apenas locais e quais também estão no controle remoto?

Ao criar uma tag, você obtém a opção "Enviar tag para: ...", mas como saber se uma tag foi enviada ou não após a criação? Posso ver todas as minhas tags localmente, mas preciso ter certeza de que elas estão presentes no controle remoto para que outros desenvolvedores possam removê-las.

cprcrack
fonte
Atualizei minha resposta abaixo para abordar especificamente o Atlassian SourceTree.
VonC

Respostas:

121

Mesmo sem clonagem ou busca, você pode verificar a lista de tags no repositório upstream com git ls-remote:

git ls-remote --tags /url/to/upstream/repo

(como ilustrado em " Ao listar git-ls-remote, por que há" ^{}"após o nome da tag? ")

O xbmono ilustra nos comentários que são necessárias aspas:

git ls-remote --tags /some/url/to/repo "refs/tags/MyTag^{}"

Observe que você sempre pode enviar seus commits e tags em um comando com (git 1.8.3+, abril de 2013):

git push --follow-tags

Veja Push git confirma e identifica simultaneamente .


Em relação ao Atlassian SourceTree especificamente:

Observe que, a partir deste segmento , o SourceTree ONLY mostra tags locais.

Há uma solicitação de aprimoramento (RFE) solicitada SRCTREEWIN-4015desde dezembro de 2015.

Uma solução simples:

vê uma lista de apenas tags não enviadas?

git push --tags

ou marque a Push all tagscaixa "" na caixa de diálogo "Enviar", todas as tags serão enviadas para o controle remoto.

https://community.atlassian.com/tnckb94959/attachments/tnckb94959/sourcetree-questions/10923/1/Screen%20Shot%202015-12-15%20at%208.49.48%20AM.png

Dessa forma, você terá "certeza de que eles estão presentes no controle remoto para que outros desenvolvedores possam puxá-los".

VonC
fonte
3
Isso é ótimo, mas eu estava perguntando sobre como conhecê-lo com o Atlassian SourceTree, não com a linha de comando git.
cprcrack
Tentei refs/tags/MyTag^{}obter o ID de confirmação vinculado a essa tag, mas esse comando git ls-remotenão retorna nada. Existe alguma maneira de obter o ID de confirmação de uma marca não referenciada?
xbmono 15/03
@xbmono Isso deve ser stackoverflow.com/a/12939216/6309
VonC 15/03
1
@xbmono Boa captura! Incluímos seu comentário na resposta para obter mais visibilidade.
VonC 15/03
145

Você pode listar as tags no repositório remoto com ls-remotee verificar se elas estão lá. Suponha que o nome da referência remota esteja origina seguir.

git ls-remote --tags origin

E você pode listar tags locais com tag.

git tag

Você pode comparar os resultados manualmente ou em script.

Landys
fonte
1
@VonC Você é mais rápido. :) Estou tentando resolver mais gitperguntas para me familiarizar git. :)
Landys 23/09
Não tem problema: é assim que eu tenho aprendido o Git desde o final de 2008.
VonC 23/09/14
1
Isso é ótimo, mas eu estava perguntando sobre como conhecê-lo com o Atlassian SourceTree, não com a linha de comando git.
cprcrack
2
@cprcrack Então você estava perguntando se o Atlassian SourceTree fornece o recurso para visualizar as tags remotas na GUI, certo? Eu tenho um olhar áspero, e parece que não. Mas por que não clicar no menu Actions -> Open in Terminale digitar git ls-remote --tags origine executar?
Landys
2
@ Landys Obrigado, isso é útil. Ao listar tags remotas, vejo entradas duplas. Eles têm ID diff, mas o mesmo nome de tag, exceto com o postfix ^ {}. Exemplo: release-v1.0, release-v1.0 ^ {}, release-v1.1, release-v1.1 ^ {}, etc. Você sabe quais são essas entradas extras? Embora as entradas extras tenham ID diff, o git log <ID> fornece a mesma saída.
shiouming 26/05