2010-06-29 12 views
12

He asignado algunos archivos fuente a mi repositorio de git y etiquetado como una nueva versión de mi software. Pero vi un error que acababa de cometer y usé la función "modificar" para confirmar los archivos corregidos.¿Qué sucede en Git con una etiqueta cuando modifica la confirmación que se etiquetó?

Ahora, veo que la etiqueta no se transfirió a la nueva confirmación (la realizada con la función "modificar"). Pero también puedo ver que la etiqueta todavía existe ...

Me gustaría saber qué pasó con la etiqueta. ¿Este comportamiento es un error? ¿La etiqueta está vinculada a una confirmación que ya no existe?

Sé que puedo forzar la creación de la misma etiqueta en la nueva confirmación, pero creo que debería haber una manera mejor (como un parámetro de línea de comando en la confirmación usando "modificar").

+0

No existe tal parámetro para 'commit --amend' porque las etiquetas están destinadas a marcar una confirmación dada; En general, no desea moverlos cada vez que cometa commits. – Cascabel

Respuesta

10

Esto es por diseño. Git rastrea los commits, tags, blobs y trees como SHA-1 hashes de sus contenidos. Son simplemente punteros a los objetos. El objeto al que apunta la etiqueta todavía está allí. Esta es la versión de la confirmación antes de modificarla. Simplemente borre la etiqueta y vuelva a crearla. Asegúrese de que otros que están utilizando el repositorio sepan lo que hizo si comenzaran algo a partir de esa confirmación.

Para obtener un buen conocimiento de cómo funciona git, eche un vistazo a la charla de Scott Chacon's Rails Conference sobre git en gitcasts.com. Además, lea el libro corto en git: progit.org/book.

+0

Gracias. Sabía que Git usaba SHA-1, pero pensé que la función de modificación simplemente había eliminado la confirmación anterior y que, por lo tanto, la etiqueta ya no tenía nada que señalar. –

+1

@Fififox, esa es una de las cosas buenas de git, no se puede perder algo siempre y cuando se tenga una referencia en alguna parte. – kubi

Cuestiones relacionadas