¿Cómo etiquetar un commit antiguo en Git?

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

Entonces, ¿cómo añadir una etiqueta a un commit arbitrario y antiguo?

Solución

Ejemplo:

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

Donde 9fceb02 es la parte inicial del id de la confirmación.

A continuación, puede empujar la etiqueta con git push origin v1.2.

Puedes hacer git log para mostrar todos los commit id's en tu rama actual.

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

Advertencia: Esto crea etiquetas con la fecha actual (y ese valor es el que se mostrará en una página de publicaciones de GitHub, por ejemplo). Si quieres que la etiqueta esté fechada con la fecha de confirmación, por favor mira otra respuesta.

Comentarios (6)

Just the Code

# 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 se ejecuta el comando git tag), no la fecha de la confirmación. La ayuda de Git para tag tiene una sección _"On Backdating Tags"_ que dice:

Si has importado algunos cambios desde otro VCS y quieres añadir etiquetas para las principales versiones de tu trabajo, es útil poder especificar la fecha a incrustar dentro del objeto etiqueta; tales datos en el objeto etiqueta afectan, por ejemplo, al ordenamiento de las etiquetas en la interfaz de gitweb.

Para establecer la fecha que se utilizará en los futuros objetos de etiqueta, establece la variable de entorno GIT_COMMITTER_DATE (ver la discusión posterior de los posibles valores; la forma más común es "YYYY-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 la hora del commit HEAD mediante:

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

Podemos extraer la fecha de un commit específico vía:

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"
Comentarios (4)

La forma más sencilla de hacerlo es

git tag v1.0.0 f4ba1fc

siendo f4ba1fc el principio del hash del commit que quieres etiquetar y v1.0.0 la versión que quieres etiquetar.

Comentarios (0)