Cambiar a otra etiqueta Git

180

¿Cómo verifico la versión / etiqueta de la versión 1.1.4 del paquete rspec ?

cd ~/Library/Application\ Support/TextMate/Bundles/
git clone git://github.com/rspec/rspec-tmbundle.git RSpec.tmbundle
osascript -e 'tell app "TextMate" to reload bundles'
jspooner
fuente

Respuestas:

336

Clone el repositorio como de costumbre:

git clone git://github.com/rspec/rspec-tmbundle.git RSpec.tmbundle

Luego revisa la etiqueta que quieras así:

git checkout tags/1.1.4

Esto desprotegerá la etiqueta en un estado 'HEAD separado'. En este estado, "puede mirar a su alrededor, hacer cambios experimentales y confirmarlos, y [descartar esas confirmaciones] sin afectar ninguna rama al realizar otro pago".

Para retener los cambios realizados, muévalos a una nueva sucursal:

git checkout -b 1.1.4-jspooner

Puede volver a la rama maestra utilizando:

git checkout master

Tenga en cuenta que, como se mencionó en la primera revisión de esta respuesta, hay otra forma de pagar una etiqueta:

git checkout 1.1.4

Pero como se mencionó en un comentario, si tiene una rama con el mismo nombre, esto dará como resultado que git le advierta que el nombre de referencia es ambiguo y verifique la rama de forma predeterminada:

warning: refname 'test' is ambiguous.
Switched to branch '1.1.4'

La taquigrafía se puede usar de forma segura si el repositorio no comparte nombres entre ramas y etiquetas.

Código falso mono Rashid
fuente
78
Para los espectadores en coche, esta respuesta es ambigua. Si hay una rama y una etiqueta llamada 1.1.4. Git pagará la rama, no la etiqueta. A la caja de forma explícita la etiqueta hacer:git checkout tags/1.1.4
ocodo
2
¿Cómo volvemos al 'maletero'?
Vinay W
3
@VinayWadhwa git checkout master
ABCD.ca
1
Y para ver las etiquetas, solo emita git tag.
ACK_stoverflow
8

A partir de Git v2.23.0 (agosto de 2019), git switches preferible a git checkoutcuando simplemente está cambiando ramas / etiquetas. Supongo que hicieron esto ya que git checkouttenían dos funciones: cambiar ramas y restaurar archivos. Entonces, en v2.23.0, agregaron dos nuevos comandos git switch, y git restore, para separar esas preocupaciones. Yo predeciría que en algún momento en el futuro git checkoutquedará en desuso.

Para cambiar a una rama normal, use git switch <branch-name>. Para cambiar a un objeto de confirmación, incluidas las confirmaciones individuales y las etiquetas, use git switch --detach <commitish>, donde <commitish>está el nombre de la etiqueta o el número de confirmación.

La --detachopción te obliga a reconocer que estás en un modo de "inspección y experimentos descartables" . Para crear una nueva rama desde el commit al que está cambiando, use git switch -c <new-branch> <start-point>.

chharvey
fuente