Pregunta ¿Cómo etiquetar una confirmación más antigua en Git?


Somos nuevos en git, y quiero establecer una etiqueta al principio de nuestro repositorio. Nuestro código de producción es el mismo que el repositorio inicial, pero hemos realizado confirmaciones desde entonces. Una etiqueta al principio nos permitiría "revertir" la producción a un estado conocido y estable.

Entonces, ¿cómo agregar una etiqueta a una confirmación arbitraria y más antigua?


680
2017-12-09 23:23


origen


Respuestas:


Ejemplo:

git tag -a v1.2 9fceb02 -m "Message here"

Dónde 9fceb02 es la parte inicial de la identificación de confirmación.

Luego puede empujarlos usando git push --tags origin master

Tu puedes hacer git log para mostrar todas las identificaciones de confirmación en su rama actual.

También hay un buen capítulo sobre etiquetado en el libro Pro Git.

Advertencia: Esto crea etiquetas con el fecha actual (y ese valor es lo que se mostrará en una página de lanzamientos de github, por ejemplo). Si desea que la etiqueta esté fechada con la fecha de compromiso, consulte otra respuesta.


1104
2017-12-09 23:27



Solo el código

# Set the HEAD to the old commit that we want to tag
git checkout 9fceb02

# temporarily set the date to the date of the HEAD commit, and add the tag
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" \
git tag -a v1.2 -m"v1.2"

# set HEAD back to whatever you want it to be
git checkout master

Detalles

La respuesta de @dkinzer crea etiquetas cuya fecha es la fecha actual (cuando ejecutó el git tag mando), no la fecha de la confirmación. La ayuda de Git para tag tiene una sección "En las etiquetas de retroceso" que dice:

Si ha importado algunos cambios de otro VCS y desea agregar etiquetas para las principales versiones de su trabajo, es útil poder especificar la fecha para incrustar dentro del objeto de etiqueta; tales datos en el objeto etiqueta afectan, por ejemplo, el orden de las etiquetas en la interfaz gitweb.

Para establecer la fecha utilizada en futuros objetos de etiqueta, establezca la variable de entorno GIT_COMMITTER_DATE (Consulte la discusión posterior de valores posibles, la forma más común es "AAAA-MM-DD HH: MM").

Por ejemplo:

$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1

La página "Cómo etiquetar en Git" nos muestra que podemos extraer el tiempo del compromiso HEAD a través de:

git show --format=%aD  | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700

Podríamos extraer la fecha de una confirmación específica a través de:

GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"

Sin embargo, en lugar de repetir el commit dos veces, parece más fácil simplemente cambiar el HEAD a ese commit y usarlo implícitamente en ambos comandos:

git checkout 9fceb02 

GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"

80
2018-02-13 16:09



La forma más sencilla de hacerlo es

git tag v1.0.0 f4ba1fc

con f4ba1fc siendo el comienzo del hash del compromiso que desea etiquetar y v1.0.0 siendo la versión que quieres etiquetar


61
2018-06-02 14:30



Usar comando:

git tag v1.0 ec32d32

Donde v1.0 es el nombre de la etiqueta y ec32d32 es la confirmación que desea etiquetar

Una vez hecho esto, puede empujar las etiquetas de la siguiente manera:

git push origin --tags

Referencia:

Git (control de revisión): ¿cómo puedo etiquetar un punto de compromiso previo específico en GitHub?


12
2017-09-21 20:29



Esta es una vieja pregunta, y las respuestas ya dadas funcionan, pero también hay una nueva opción que se puede considerar.

Si está utilizando SourceTree para administrar sus repositorios de git, puede hacer clic derecho en cualquier confirmación y agregarle una etiqueta. Con otro clic de mouse, también puede enviar la etiqueta directamente a la sucursal en origen.


7
2017-09-15 11:56



DE ACUERDO, Simplemente puede hacer:

git tag -a <tag> <commit-hash>

Entonces si quieres agregar etiqueta: 1.0.2 para comprometer 8ecdb02simplemente hazlo

git tag -a 1.0.2 e50f795

También agregas un mensaje al final, usando -m, algo como esto:

git tag -a 1.0.2 e50f795 -m "my message"

Después de todo, necesitas empujarlo al remote, para hacer eso, simplemente hazlo:

git push origin 1.0.2 

Si tiene muchas etiquetas que no quiere mencionar una por una, simplemente haga:

git push origin --tags

para empujar todas las etiquetas juntas ...

Además, creé los pasos en la imagen a continuación, para una mayor aclaración de los pasos: creating tag on a commit hash

También puede dd la etiqueta en Cubo o usando herramientas como SourceTree, para evitar los pasos anteriores, inicié sesión en mi Bitbucket en este caso y hacerlo desde allí:

  1. Ve a tu sucursal y encuentra el cometer desea agregar la etiqueta y hacer clic en ella:

find your commit in bitbucket

  1. En el página de compromiso, a la derecha, encuentra dónde dice No tags y haga clic en + icono:

find where it says No tags

  1. En el cuadro de nombre de etiqueta, agregue su etiqueta:

add tag name

  1. Ahora ves que la etiqueta se ha creado correctamente:

enter image description here


7
2017-07-08 07:42