¿Cómo ver las etiquetas remotas?

136

En Atlassian SourceTree, ¿cómo saber qué etiquetas son solo locales y cuáles también son remotas?

Al crear una etiqueta, aparece la opción "Insertar etiqueta para: ...", pero ¿cómo saber si una etiqueta ha sido empujada o no después de crearla? Puedo ver todas mis etiquetas localmente, pero necesito asegurarme de que estén presentes en forma remota para que otros desarrolladores puedan extraerlas.

cprcrack
fuente
He actualizado mi respuesta a continuación para abordar específicamente Atlassian SourceTree.
VonC

Respuestas:

121

Incluso sin clonar o buscar, puede consultar la lista de etiquetas en el repositorio ascendente con git ls-remote:

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

(como se ilustra en " Al enumerar git-ls-remote ¿por qué hay" ^{}"después del nombre de la etiqueta? ")

xbmono ilustra en los comentarios que se necesitan citas:

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

Tenga en cuenta que siempre puede insertar sus confirmaciones y etiquetas en un comando con (git 1.8.3+, abril de 2013):

git push --follow-tags

Ver Push git commits & tags simultáneamente .


Con respecto a Atlassian SourceTree específicamente:

Tenga en cuenta que, a partir de este hilo , SourceTree SOLO muestra etiquetas locales.

Hay una RFE (solicitud de mejora) iniciada SRCTREEWIN-4015desde diciembre de 2015.

Una solución simple:

ver una lista de solo etiquetas sin empujar?

git push --tags

o marque la Push all tagscasilla " " en el cuadro de diálogo "Empujar", todas las etiquetas se enviarán a su control remoto.

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

De esa manera, estará "seguro de que están presentes en forma remota para que otros desarrolladores puedan extraerlos".

VonC
fuente
3
Eso es genial, pero estaba preguntando cómo saberlo con Atlassian SourceTree, no con la línea de comando git.
cprcrack
Intenté refs/tags/MyTag^{}vincular la identificación de confirmación con esa etiqueta, pero este comando git ls-remoteno devuelve nada. ¿Hay alguna forma de obtener el id de confirmación de una etiqueta desreferenciada?
xbmono
@xbmono Esto debería ser stackoverflow.com/a/12939216/6309
VonC
1
@xbmono Buena captura! He incluido tu comentario en la respuesta para mayor visibilidad.
VonC
145

Puede enumerar las etiquetas en el repositorio remoto con ls-remote, y luego verificar si está allí. Supongamos que el nombre de referencia remota se encuentra origina continuación.

git ls-remote --tags origin

Y puede enumerar etiquetas locales con tag.

git tag

Puede comparar los resultados manualmente o en script.

Landys
fuente
1
@VonC Eres más rápido. :) Estoy tratando de resolver más gitpreguntas para familiarizarme git. :)
Landys
No hay problema: así es como he estado aprendiendo Git desde fines de 2008.
VonC
1
Eso es genial, pero estaba preguntando cómo saberlo con Atlassian SourceTree, no con la línea de comando git.
cprcrack
2
@cprcrack Entonces, se preguntaba si Atlassian SourceTree proporciona la función para ver las etiquetas remotas en la GUI, ¿verdad? Tengo una mirada áspera, y parece que no. Pero, ¿por qué no simplemente hacer clic en el menú Actions -> Open in Terminaly luego escribir git ls-remote --tags originy ejecutar?
Landys
2
@Landys Gracias, eso es útil. Al enumerar etiquetas remotas, veo entradas dobles. Tienen ID de diferencia pero el mismo nombre de etiqueta excepto con postfix ^ {}. Ejemplo: release-v1.0, release-v1.0 ^ {}, release-v1.1, release-v1.1 ^ {}, etc. ¿Sabe cuáles son esas entradas adicionales? Aunque las entradas adicionales tienen ID de diferencia, sin embargo, git log <ID> proporciona el mismo resultado.
Shiouming