Cambiar a otra etiqueta de Git

Resuelto jspooner asked hace 13 años • 3 respuestas

¿Cómo reviso la versión/etiqueta 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 avatar Dec 02 '10 07:12 jspooner
Aceptado

Clona el repositorio como de costumbre:

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

Luego revisa la etiqueta que deseas así:

git checkout tags/1.1.4

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

Para conservar los cambios realizados, muévalos a una nueva rama:

git checkout -b 1.1.4-jspooner

Puede volver a la rama maestra usando:

git checkout master

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

git checkout 1.1.4

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

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

La abreviatura se puede utilizar de forma segura si el repositorio no comparte nombres entre ramas y etiquetas.

Fake Code Monkey Rashid avatar Dec 02 '2010 00:12 Fake Code Monkey Rashid

A partir de Git v2.23.0 (agosto de 2019), git switchse prefiere git checkoutcuando simplemente se cambian ramas/etiquetas. Supongo que hicieron esto ya que git checkouttenía dos funciones: cambiar de rama y restaurar archivos. Entonces, en la versión 2.23.0, agregaron dos nuevos comandos, git switchy git restore, para separar esas preocupaciones. Yo predeciría que en algún momento en el futuro git checkoutquedará obsoleto.

Para cambiar a una rama normal, utilice git switch <branch-name>. Para cambiar a un objeto similar a una confirmación, incluidas etiquetas y confirmaciones individuales , utilice 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 compromiso al que estás cambiando, usa git switch -c <new-branch> <start-point>.

chharvey avatar Mar 26 '2020 04:03 chharvey

La respuesta de Chharvey sugiere

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

En realidad, Git 2.36 (segundo trimestre de 2022) es más claro: el mensaje de error dado por " git switch HEAD~4" ( man ) " se ha aclarado para sugerir la " --detach" opción que se requiere.

Véase el compromiso 808213b (25 de febrero de 2022) de Alex Henrie ( alexhenrie) .
(Fusionado por Junio ​​C Hamano -- gitster-- en el compromiso 061fd57 , 6 de marzo de 2022)

switch: mencionar la --detachopción al morir por falta de sucursal

Aprobado por: Alex Henrie

Los usuarios que están acostumbrados a hacer ( man ) suponen que ( man ) hará lo mismo. Infórmeles sobre la opción para que no se queden preguntándose por qué no funciona pero sí funciona.git checkout <tag>git switch <tag>
--detachgit switchgit checkout

git configahora incluye en su página de manual :

suggestDetachingHead

Consejo mostrado cuando git switchse niega a separar HEAD sin la --detachopción explícita.

El mensaje de error mostrará:

a branch is expected, got tag 'xxx'
If you want to detach HEAD at the commit, try again with the --detach option
VonC avatar Mar 10 '2022 17:03 VonC