Cambiar a otra etiqueta de Git
¿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'
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.
A partir de Git v2.23.0 (agosto de 2019), git switch
se prefiere git checkout
cuando simplemente se cambian ramas/etiquetas. Supongo que hicieron esto ya que git checkout
tenía dos funciones: cambiar de rama y restaurar archivos. Entonces, en la versión 2.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 checkout
quedará 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 --detach
opció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>
.
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--detach
opción al morir por falta de sucursalAprobado 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>
--detach
git switch
git checkout
git config
ahora incluye en su página de manual :
suggestDetachingHead
Consejo mostrado cuando
git switch
se niega a separar HEAD sin la--detach
opció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