Descargar una etiqueta específica con Git

9 minutos de lectura

Descargar una etiqueta especifica con Git
Jack BeNimble

Estoy tratando de averiguar cómo puedo descargar una etiqueta particular de un repositorio de Git: es una versión posterior a la versión actual.

Vi que había una etiqueta para la versión anterior en la página web de git, con el nombre del objeto de un número hexadecimal algo largo.

Pero el nombre de la versión es “Tagged release 1.1.5“Según el sitio.

Probé un comando como este (con nombres cambiados):

git clone http://git.abc.net/git/abc.git my_abc

Y obtuve algo: un directorio, un montón de subdirectorios, etc.

Si es todo el repositorio, ¿cómo obtengo la versión que busco? Si no, ¿cómo descargo esa versión en particular?

  • Desarrollo en un repositorio completamente diferente al de producción, por lo que mi producción no conocía ninguna etiqueta cuando intenté usar git checkout. La solución fue usar “git pull –tags” y luego usar git checkout.

    – Consultor de marketing

    19 de noviembre de 2011 a las 9:35

  • “git fetch –tags” también funciona

    – John Erck

    26/10/2012 a las 20:37

  • Para evitar clonar todo el repositorio y luego cambiar a una etiqueta, puede hacer directamente una clone -b "Tagged release 1.1.5" http://git.abc.net/git/abs.git my_abc. Esto solo funcionará si no tiene una sucursal con el mismo nombre, por supuesto (dependiendo de su metodología, es posible que esto nunca suceda).

    – Glifo rojo

    5 oct 2013 a las 16:37

  • @RedGlyph Gracias, lo intentaré. De lo contrario, podemos hacer esto. git checkout -b new-branch tag-name. Ahora clone su nueva rama. Cuando queramos podemos borrar la nueva rama.

    – Kalidasan

    19 de diciembre de 2013 a las 7:12


Descargar una etiqueta especifica con Git
besado

$ git clone

le dará todo el repositorio.

Después de la clonación, puede enumerar las etiquetas con $ git tag -l y luego verifique una etiqueta específica:

$ git checkout tags/<tag_name>

Aún mejor, pague y cree una rama (de lo contrario, estará en una rama con el nombre del número de revisión de la etiqueta):

$ git checkout tags/<tag_name> -b <branch_name>

  • Sí. git es diferente a subversion en este aspecto. Una etiqueta svn básicamente copia los archivos en una nueva carpeta, por lo que puede verificar un grupo específico de archivos, mientras que las etiquetas git son simplemente indicadores de revisiones específicas.

    – dbr

    27 de abril de 2009 a las 2:17

  • ¿Qué pasa si tienes una rama y una etiqueta que tienen el mismo nombre? Si solo dices “git checkout “, dice “advertencia: refname ‘‘ es ambiguo. Cambiado a la rama ‘‘”. ¿Cómo le dices que cambie a la etiqueta?

    – Tyler

    24 de noviembre de 2010 a las 18:35

  • al hacer un pago y como mencionó Derek, el repositorio entra en un estado de “cabeza separada”. en su lugar, agregue el -b bandera diciéndole a git que cree una nueva rama y especifique un nombre de rama: git checkout <tag_name> -b <branch_name>

    – hellatán

    13 mayo 2012 a las 17:42

  • @hellatan Solo debe hacer eso cuando realmente quiera crear una rama, pero la mayoría de las veces probablemente no lo haga. Ejecutar en el estado de “cabeza separada” no le hará daño, y es probable que sea exactamente lo que desea si solo desea verificar un poco el historial de git.

    – máquina fantasma

    1 de julio de 2013 a las 22:12

  • En versión git 1.8.3.5 y más nuevo, el --branch <tag ref> debería permitirle descargar el repositorio a partir de su <tag ref> como el repo HEAD; combinado con --depth 1 hará una verificación de etiqueta superficial. Consulte stackoverflow.com/a/21699307/1695680

    – ThorSummoner

    02/10/2014 a las 20:33

1646963117 548 Descargar una etiqueta especifica con Git
Toni

git clone --branch my_abc http://git.abc.net/git/abc.git

Clonará el repositorio y lo dejará en la etiqueta que le interesa.

Documentación para 1.8.0 de clonar estados

–branch también puede tomar etiquetas y separar el HEAD en esa confirmación en el repositorio resultante.

  • Esto funciona (al menos ahora) para las etiquetas, aunque terminas en un estado HEAD desconectado.

    – mxcl

    24 de junio de 2013 a las 23:31

  • FYI: También especifique --depth 1 para evitar descargar confirmaciones no actuales.

    – Asclepio

    27 de marzo de 2014 a las 23:19


  • Esto de hecho hace no trabajar con etiquetas. Solo sucursales. Editar: parece que solo las versiones más nuevas de git lo admiten.

    – lzap

    8 de julio de 2014 a las 9:05


  • También podemos editar .git/config (o configurarlo de alguna manera) para hacer un clon superficial de dos o más etiquetas, si es necesario, actualizar un clon superficial a un clon completo, etc.

    –Sam Watkins

    29 de enero de 2015 a las 11:41


  • también puede especificar la sucursal que desea junto con la etiqueta. Me gusta git clone --branch my_abc http://git.abc.net/git/abc.git -b quality calidad es el nombre de la rama que queremos por cierto.

    – hazimdikenli

    13 de noviembre de 2019 a las 11:19


1646963118 233 Descargar una etiqueta especifica con Git
yuan hong

Para verificar solo una etiqueta determinada para la implementación, uso, por ejemplo:

git clone -b 'v2.0' --single-branch --depth 1 https://github.com/git/git.git

Esta parece ser la forma más rápida de verificar el código de un repositorio remoto si uno solo tiene interés en el código más reciente en lugar de en un repositorio completo. De esta forma, se parece al comando ‘svn co’.

Nota: Por el manual de gitpasando el --depth la bandera implica --single-branch por defecto.

–profundidad

Cree un clon superficial con un historial truncado al número especificado de confirmaciones. Implica –single-branch a menos que se proporcione –no-single-branch para buscar las historias cerca de las puntas de todas las ramas. Si desea clonar submódulos superficialmente, pase también –shallow-submodules.

  • --depth n implica --single-branch. No necesitas ambos.

    – Niyaz

    5 de octubre de 2018 a las 1:27

  • @RyanNerd +1 🙂 Además, solo una nota para cualquier otra persona que haya pasado la última hora resolviendo esto: no cite el nombre de la rama/etiqueta si ejecuta este comando en Windows. Literalmente incluirá las comillas tal cual cuando busque la rama/etiqueta

    – Ruslán

    7 de noviembre de 2018 a las 20:29

  • Estoy tratando de clonar como parte de un script para la implementación. ¿Hay alguna manera de ocultar el mensaje de ‘cabeza separada’? Yo he tratado: git clone -b 'v2.0' --quiet --depth 1 https://github.com/git/git.git Aunque eso no funciona.

    – paleta salada

    14 de noviembre de 2021 a las 14:23

1646963119 231 Descargar una etiqueta especifica con Git
brutovogel

No soy un experto en git, pero creo que esto debería funcionar:

git clone http://git.abc.net/git/abc.git
cd abc
git checkout my_abc 

O

git clone http://git.abc.net/git/abc.git
cd abc
git checkout -b new_branch my_abc

La segunda variación establece una nueva rama basada en la etiqueta, lo que le permite evitar una ‘CABEZA separada’. (manual de git-checkout)

Cada repositorio de git contiene el historial de revisión completo, por lo que clonar el repositorio le brinda acceso a la última confirmación, además de todo lo que vino antes, incluida la etiqueta que está buscando.

1646963120 1 Descargar una etiqueta especifica con Git
cris j

Puede usar el archivo git para descargar una bola de alquitrán para una etiqueta determinada o una identificación de confirmación:

git archive --format=tar --remote=[hostname]:[path to repo] [tag name] > tagged_version.tar

También puede exportar un archivo zip de una etiqueta.

  1. Etiquetas de lista:

    git tag
    
    0.0.1
    0.1.0
    
  2. Exportar una etiqueta:

    git archive -o /tmp/my-repo-0.1.0.zip --prefix=my-repo-0.1.0/ 0.1.0
    
  3. Notas:

    • No es necesario especificar el formato. Será recogido por el nombre del archivo de salida.
    • Especificar el prefijo hará que su código se exporte a un directorio (si incluye una barra inclinada al final).

  • Este comando no funciona con submódulos, consulte stackoverflow.com/questions/1591387/…

    – Zitrax

    13 de enero de 2010 a las 14:56

  • Pero git archive también elimina el control de versiones, por lo que no puede simplemente hacer otro pago de git para actualizar a la siguiente etiqueta.

    – idbrii

    06/04/2011 a las 21:37

  • Sí, pierde el control de la versión, pero el tiempo que ahorra git archive en comparación con git clone es ABSOLUTAMENTE INCREÍBLE. +1

    – Marzo

    21 de marzo de 2013 a las 11:28

  • Esto está TAN CERCA de lo que quiero, excepto que git archive me pide una contraseña cuando todo lo que quiero hacer es descargar desde un repositorio público. ¿Cómo puedo hacer que use http en lugar de ssh?

    – Robru

    21 de febrero de 2014 a las 18:26

  • Esto falla con el fatal: Operation not supported by protocol. y Unexpected end of command stream errores Alternativamente, también puede devolver el fatal: The remote end hung up unexpectedly error.

    – Asclepio

    27/03/2014 a las 21:41


1646963120 557 Descargar una etiqueta especifica con Git
llamar la atención

Utilizar el --single-branch cambiar (disponible a partir de Git 1.7.10). La sintaxis es:

git clone -b <tag_name> --single-branch <repo_url> [<dest_dir>] 

Por ejemplo:

git clone -b 'v1.9.5' --single-branch https://github.com/git/git.git git-1.9.5

El beneficio: Git recibirá objetos y (necesitará) resolver deltas solo para la rama/etiqueta especificada, ¡mientras revisa exactamente la misma cantidad de archivos! Dependiendo del repositorio de origen, esto le ahorrará mucho espacio en disco. (Además, será mucho más rápido).

  • Este comando no funciona con submódulos, consulte stackoverflow.com/questions/1591387/…

    – Zitrax

    13 de enero de 2010 a las 14:56

  • Pero git archive también elimina el control de versiones, por lo que no puede simplemente hacer otro pago de git para actualizar a la siguiente etiqueta.

    – idbrii

    06/04/2011 a las 21:37

  • Sí, pierde el control de la versión, pero el tiempo que ahorra git archive en comparación con git clone es ABSOLUTAMENTE INCREÍBLE. +1

    – Marzo

    21 de marzo de 2013 a las 11:28

  • Esto está TAN CERCA de lo que quiero, excepto que git archive me pide una contraseña cuando todo lo que quiero hacer es descargar desde un repositorio público. ¿Cómo puedo hacer que use http en lugar de ssh?

    – Robru

    21 de febrero de 2014 a las 18:26

  • Esto falla con el fatal: Operation not supported by protocol. y Unexpected end of command stream errores Alternativamente, también puede devolver el fatal: The remote end hung up unexpectedly error.

    – Asclepio

    27/03/2014 a las 21:41


primero busque todas las etiquetas en ese control remoto específico

git fetch <remote> 'refs/tags/*:refs/tags/*'

o simplemente escriba

git fetch <remote>

Luego verifique las etiquetas disponibles

git tag -l

luego cambie a esa etiqueta específica usando el siguiente comando

git checkout tags/<tag_name>

¡Espero que esto te ayude!

  • ¿Por qué usar ‘git tag -l’ debería ser lo mismo que ‘git tag’?

    – sérum

    11 oct 2018 a las 11:47

  • @serup; git tag agregará una etiqueta mientras git tag -l enumera las etiquetas disponibles

    – Joost Dobken

    9 dic 2019 a las 16:27

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad