Pregunta Descargue una etiqueta específica con Git


Estoy intentando descubrir cómo puedo descargar una etiqueta particular de un repositorio de Git, es una versión detrás de 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 largo.

Pero el nombre de la versión es "Tagged release 1.1.5"según el sitio.

Intenté un comando como este (con los nombres cambiados):

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

Y obtuve algo: un directorio, un grupo de subdirectorios, etc.

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


1657
2018-04-27 01:15


origen


Respuestas:


$ git clone

te dará todo el repositorio.

Después del clon, puede listar las etiquetas con $ git tag -l y luego verificar una etiqueta específica:

$ git checkout tags/<tag_name>

Mejor aún, finalice la compra y cree una sucursal (de lo contrario, estará en una sucursal que lleva el nombre del número de revisión de la etiqueta):

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

2555
2018-04-27 01:53



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

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

Documentación para 1.8.0 de git clone estados.

--branch también puede tomar etiquetas y separa el HEAD en ese commit en el repositorio resultante.


267
2018-06-14 09:33



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, que le permite evitar un 'HEAD separado'. (manual de git-checkout)

Cada repositorio de git contiene todo el historial de revisión, por lo que la clonación del repositorio le da acceso a la última confirmación, más todo lo que venía antes, incluida la etiqueta que está buscando.


94
2018-04-27 01:54



Para ver solo una etiqueta determinada para la implementación, utilizo, p. Ej .:

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 solo tiene interés en el código más reciente en lugar de en un repositorio completo. De esta manera, se asemeja al comando 'svn co'.


85
2017-07-28 02:35



Puede usar git archive para descargar una bola de alquitrán para una determinada etiqueta o ID 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 la 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 necesita especificar el formato. Será recogido por el nombre del archivo de salida.
    • Al especificar el prefijo, su código se exportará a un directorio (si incluye una barra inclinada).

71
2017-12-09 21:46



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 para la rama / etiqueta especificada solamente, ¡mientras comprueba exactamente la misma cantidad de archivos! Según el repositorio de origen, esto le ahorrará mucho espacio en disco. (Además, será mucho más rápido).


40
2018-06-25 06:28



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

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

o simplemente escriba

git fetch <remote>

Luego verifica las etiquetas disponibles

git tag -l

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

git checkout tags/<tag_name>

Espero que esto te ayude!


21
2017-09-10 18:57



Revisé el documentación de pago de git, reveló una cosa interesante:

git checkout -b <new_branch_name> <start_point>   , donde <start_point> es el nombre de un commit   en el cual comenzar la nueva rama;   Predeterminado a HEAD

Así que podemos mencionar el nombre de la etiqueta (ya que la etiqueta no es más que el nombre de una confirmación) como, por ejemplo:

>> git checkout -b 1.0.2_branch 1.0.2
luego, modifica algunos archivos 
  >> empuje git - etiquetas

P.S: En Git, no puede actualizar una etiqueta directamente (ya que la etiqueta es solo una etiqueta para una confirmación), necesita extraer la misma etiqueta como una rama y luego comprometerse con ella y luego crear una etiqueta separada.


14
2018-04-26 14:39



Si tus etiquetas se pueden ordenar usando el linux sort comando, usa esto:

git tag | sort -n | tail -1

p.ej. Si git tag devoluciones:

v1.0.1
v1.0.2
v1.0.5
v1.0.4

git tag | sort -n | tail -1 dará salida:

v1.0.5

git tag | sort -n | tail -2 | head -1 dará salida:

v1.0.4

(porque solicitó la segunda etiqueta más reciente)

para pagar la etiqueta, primero clone el repositorio, luego escriba:

git checkout v1.0.4

..o cualquier etiqueta que necesites


14
2018-05-12 12:23



git fetch <gitserver> <remotetag>:<localtag>

================================

Solo hice esto. Primero me aseguré de conocer la ortografía del nombre de la etiqueta.

git ls-remote --tags gitserver; : or origin, whatever your remote is called

Esto me dio una lista de etiquetas en mi servidor de git para elegir. El póster original ya conocía el nombre de su etiqueta, por lo que este paso no es necesario para todos. La salida se veía así, aunque la lista real era más larga.

8acb6864d10caa9baf25cc1e4857371efb01f7cd    refs/tags/v5.2.2.2
f4ba9d79e3d760f1990c2117187b5010e92e1ea2    refs/tags/v5.2.3.1
8dd05466201b51fcaf4ca85897347d82fcb29518    refs/tags/Fix_109
9b5087090d9077c10ba22d99d5ce90d8a45c50a3    refs/tags/Fix_110

Escogí la etiqueta que quería y la compré y nada más de la siguiente manera.

git fetch gitserver Fix_110

Luego etiqueté esto en mi máquina local, dando a mi etiqueta el mismo nombre.

git tag Fix_110 FETCH_HEAD

No quería clonar el repositorio remoto como otras personas me sugirieron hacer, ya que el proyecto en el que estoy trabajando es grande y deseo desarrollarme en un ambiente agradable y limpio. Siento que esto está más cerca de las preguntas originales "Estoy tratando de averiguar cómo descargar UNA ETIQUETA PARTICULAR" que la solución que sugiere clonar todo el repositorio. No veo por qué alguien debería tener una copia del código fuente de Windows NT y Windows 8.1 si quiere ver el código fuente del DOS 0.1 (por ejemplo).

Tampoco quería utilizar el PAGO Y ENVÍO, como otros han sugerido. Me sacaron una rama y no quería afectar eso. Mi intención era buscar el software que quería para poder seleccionar algo y agregarlo a mi desarrollo.

Probablemente haya una forma de recuperar la etiqueta en lugar de solo una copia de la confirmación etiquetada. Tuve que etiquetar el compromiso alcanzado yo mismo. EDITAR: Ah, sí, lo he encontrado ahora.

git fetch gitserver Fix_110:Fix_110

Donde vea los dos puntos, ese es el nombre remoto: nombre-local y aquí están los nombres de las etiquetas. Esto funciona sin alterar el árbol de trabajo, etc. Simplemente parece copiar cosas desde el control remoto a la máquina local para que tenga su propia copia.

git fetch gitserver --dry-run Fix_110:Fix_110

con la opción --dry-run added le permitirá ver lo que haría el comando, si quiere verificar lo que quiere. Así que supongo que un simple

git fetch gitserver remotetag:localtag

es la verdadera respuesta.

=

Una nota por separado sobre las etiquetas ... Cuando comienzo algo nuevo normalmente etiqueto el repositorio vacío después de git init, ya que

git rebase -i XXXXX 

requiere una confirmación, y surge la pregunta "¿cómo se basan los cambios que incluyen su primer cambio de software?" Entonces, cuando empiezo a trabajar lo hago

git init
touch .gitignore
[then add it and commit it, and finally]
git tag EMPTY

es decir, crear un compromiso antes de mi primer cambio real y luego usarlo

git rebase -i EMPTY 

si quiero rebase todo mi trabajo, incluyendo el primer cambio.


13
2017-12-11 17:28