Estoy tratando de 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 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 estoy buscando? Si no, ¿cómo descargo esa versión en particular?
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, esto puede nunca suceder).git checkout -b new-branch tag-name
. Ahora clona tu nueva rama. Cuando queramos podemos eliminar la nueva rama.Respuestas:
te dará todo el repositorio.
Después del clon, puede enumerar las etiquetas con
$ git tag -l
y luego retirar una etiqueta específica:Aún mejor, finalice la compra y cree una rama (de lo contrario, estará en una rama con el nombre del número de revisión de la etiqueta):
fuente
-b
git indicador revelador para crear una nueva rama y especificar un nombre de rama:git checkout <tag_name> -b <branch_name>
1.8.3.5
y posteriores,--branch <tag ref>
debería permitirte descargar el repositorio comenzando en tu<tag ref>
como el repositorio HEAD; combinado con--depth 1
hará un pago superficial de la etiqueta. Ver stackoverflow.com/a/21699307/1695680Clonará el repositorio y lo dejará en la etiqueta que le interesa.
Documentación para 1.8.0 de estados de clon git .
fuente
--depth 1
para evitar la descarga de confirmaciones no actuales.git clone --branch my_abc http://git.abc.net/git/abc.git -b quality
calidad es el nombre de la sucursal que queremos por cierto.Para retirar solo una etiqueta dada para la implementación, utilizo, por ejemplo:
Esta parece ser la forma más rápida de extraer código de un repositorio remoto si uno solo está interesado en el código más reciente en lugar de en un repositorio completo. De esta manera, se parece al comando 'svn co'.
Nota: Según el manual de Git , pasar la
--depth
bandera implica--single-branch
por defecto.fuente
--depth n
implica--single-branch
. No necesitas los dos.No soy un experto en git, pero creo que esto debería funcionar:
O
La segunda variación establece una nueva rama basada en la etiqueta, que le permite evitar una 'CABEZA separada'. (manual de git-checkout)
Cada repositorio de git contiene el historial de revisiones completo, por lo que clonar el repositorio le da acceso a la última confirmación, además de todo lo anterior, incluida la etiqueta que está buscando.
fuente
git checkout -b b1.5.0 v1.5.0
cuando revisaba una versión dentro de una rama 'gh-pages' para empujar con éxito a las páginas de Github. Este Gist que escribí podría ayudar a otros a re: branch / tag / submodules ... gist.github.com/1064750cd
ingresarabc/
primero antes de que puedas pagar una sucursalcd
.Puede usar el archivo git para descargar una bola de alquitrán para una etiqueta determinada o confirmar la identificación:
También puede exportar un archivo zip de una etiqueta.
Etiquetas de lista:
Exportar una etiqueta:
Notas:
fuente
git archive
me pide una contraseña cuando todo lo que quiero hacer es descargarlo de un repositorio público. ¿Cómo puedo hacer que use http en lugar de ssh?fatal: Operation not supported by protocol.
yUnexpected end of command stream
. Alternativamente, también puede devolver elfatal: The remote end hung up unexpectedly
error.Use el
--single-branch
interruptor (disponible a partir de Git 1.7.10) . La sintaxis es:Por ejemplo:
El beneficio: Git recibirá objetos y (necesitará) resolver los deltas solo para la rama / etiqueta especificada, ¡mientras verifica 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).
fuente
primero busque todas las etiquetas en ese control remoto específico
o simplemente escriba
Luego verifique las etiquetas disponibles
luego cambie a esa etiqueta específica usando el siguiente comando
Espero que esto te ayude!
fuente
git tag
agregará una etiqueta mientrasgit tag -l
enumera las etiquetas disponiblesSi sus etiquetas se pueden ordenar usando el
sort
comando linux , use esto:p.ej. si
git tag
vuelve:git tag | sort -n | tail -1
dará salida:git tag | sort -n | tail -2 | head -1
dará salida:(porque solicitó la segunda etiqueta más reciente)
para pagar la etiqueta, primero clone el repositorio, luego escriba:
... o cualquier etiqueta que necesites.
fuente
git for-each-ref --sort='*authordate' --format='%(tag)' refs/tags
git checkout `git tag | sort -n | tail -1`
sort -V
lugar desort -n
. El primero maneja correctamente las versiones, que no son necesariamente numéricas, por ejemplo, "1.2.3". También entiende que "0.4.10" va después de "0.4.1" y no después de "0.4.2" que-n
le dará.Revisé la documentación de pago de git , reveló una cosa interesante:
Entonces 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:
PD: en Git, no puede actualizar una etiqueta directamente (dado que la etiqueta es solo una etiqueta para una confirmación), debe verificar la misma etiqueta que una rama y luego confirmarla y luego crear una etiqueta separada.
fuente
===================================
Acabo de hacer esto. Primero me aseguré de saber la ortografía del nombre de la etiqueta.
Esto me dio una lista de etiquetas en mi servidor git para elegir. El póster original ya sabía el nombre de su etiqueta, por lo que este paso no es necesario para todos. El resultado se veía así, aunque la lista real era más larga.
Elegí la etiqueta que quería y obtuve eso y nada más de la siguiente manera.
Luego etiqueté esto en mi máquina local, dándole a mi etiqueta el mismo nombre.
No quería clonar el repositorio remoto como otras personas me han sugerido, ya que el proyecto en el que estoy trabajando es grande y quiero desarrollarlo en un ambiente limpio y agradable. Siento que esto está más cerca de las preguntas originales "Estoy tratando de descubrir 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 quieren ver el código fuente de DOS 0.1 (por ejemplo).
Tampoco quería usar CHECKOUT como otros han sugerido. Revisé una sucursal y no quise afectarla. Mi intención era buscar el software que quería para poder elegir algo y agregarlo a mi desarrollo.
Probablemente haya una manera de obtener la etiqueta en sí en lugar de solo una copia de la confirmación que fue etiquetada. Tuve que etiquetar el compromiso obtenido yo mismo EDITAR: Ah sí, lo he encontrado ahora.
Donde ve los dos puntos, ese es el nombre remoto: nombre local y aquí están los nombres de las etiquetas. Esto se ejecuta sin alterar el árbol de trabajo, etc. Parece que copia cosas del control remoto a la máquina local para que tenga su propia copia.
con la opción --dry-run agregada, le permitirá ver lo que haría el comando, si desea verificar que es lo que desea. Así que supongo que un simple
Es la verdadera respuesta.
=
Una nota separada sobre las etiquetas ... Cuando comienzo algo nuevo, generalmente etiqueto el repositorio vacío después de git init, ya que
requiere un compromiso, y surge la pregunta "¿cómo se vuelven a modificar los cambios que incluyen su primer cambio de software?" Entonces cuando empiezo a trabajar lo hago
es decir, crear un commit antes de mi primer cambio real y luego usarlo
si quiero reajustar todo mi trabajo, incluido el primer cambio .
fuente
A partir de la respuesta de Peter Johnson, creé un pequeño alias para mí:
también conocido como 'git checkout última etiqueta'.
Esto se basa en la versión GNU de sort, que maneja adecuadamente situaciones como la que lOranger señaló:
Si estás en una Mac,
brew install coreutils
y luego llama a gsort en su lugar.fuente
tratar:
fuente
Revisando etiquetas
Si desea ver las versiones de los archivos a los que apunta una etiqueta, puede hacer un pago git, aunque esto pone su repositorio en estado "HEAD separado", lo que tiene algunos efectos secundarios negativos:
En el estado "HEAD separado", si realiza cambios y luego crea un commit, la etiqueta permanecerá igual, pero su nuevo commit no pertenecerá a ninguna rama y será inalcanzable, excepto por el hash de commit exacto. Por lo tanto, si necesita realizar cambios, por ejemplo, si está reparando un error en una versión anterior, generalmente querrá crear una rama:
Si hace esto y realiza una confirmación, la rama de su versión2 será ligeramente diferente de su etiqueta v2.0.0, ya que avanzará con sus nuevos cambios, así que tenga cuidado.
fuente
Lo hago a través de la API de Github:
fuente