usar tipos tag sirve repositorio qué podemos partir para otro oneline nuevo nos log hace existen etiquetas cuando crear creamos git git-tag

tipos - ¿qué hace git log-oneline?



¿Las etiquetas de Git solo se aplican a la rama actual? (5)

Al llamar solo a la git tag <TAGNAME> sin ningún parámetro adicional, Git creará una nueva etiqueta a partir de su HEAD actual (es decir, el HEAD de su rama actual). Al agregar confirmaciones adicionales en esta rama, la rama HEAD se mantendrá al día con las nuevas confirmaciones, mientras que la etiqueta siempre se refiere a la misma confirmación.

Cuando llame a la git tag <TAGNAME> <COMMIT> puede incluso especificar qué compromiso usar para crear la etiqueta.

De todos modos, una etiqueta es simplemente un "puntero" para una determinada confirmación (no una rama).

Actualmente estoy trabajando con un repositorio que tiene múltiples ramas.

Cuando creo una etiqueta, ¿esa etiqueta se refiere a la rama actual?

En otras palabras: cada vez que creo una etiqueta, ¿necesito cambiar a la rama deseada y etiquetarla dentro de esa rama para que la etiqueta se refiera a esa rama en ese momento?


Las etiquetas y las ramas no tienen ninguna relación, ya que las etiquetas se refieren a una confirmación específica, y la rama es una referencia móvil a la última confirmación de una historia. Las ramas van, las etiquetas se quedan.

Por lo tanto, cuando etiqueta una confirmación, a git no le importa qué compromiso o rama está desprotegido, si le proporciona el SHA1 de lo que desea etiquetar.

Incluso puedo etiquetar al referirme a una rama (luego etiquetará la punta de la rama), y luego decir que la sugerencia de la rama está en otra parte (con git reset --hard por ejemplo), o eliminar la rama. La etiqueta que creé sin embargo no se moverá.


Podemos crear una etiqueta para alguna confirmación pasada:

git tag nombre_de_tarea referencia de commit

Por ejemplo: git tag v1.0 5fcdb03


Si creas una etiqueta por ej.

git tag v1.0

la etiqueta se referirá a la confirmación más reciente de la sucursal en la que se encuentra actualmente. Puede cambiar la rama y crear una etiqueta allí.

También puede referirse a la otra rama durante el etiquetado,

git tag v1.0 name_of_other_branch

que creará la etiqueta a la confirmación más reciente de la otra rama.

O simplemente puede poner la etiqueta en cualquier lugar, sin importar qué rama, al hacer referencia directamente al SHA1 de alguna confirmación

git tag v1.0 <sha1>


La respuesta de CharlesB y la de Helmbert son útiles, pero me tomó un tiempo entenderlas. Aquí hay otra forma de expresarlo:

  • Una etiqueta es un puntero a una confirmación , y las confirmaciones existen independientemente de las ramas .
    • Es importante comprender que las etiquetas no tienen una relación directa con las ramas ; solo identifican una confirmación .
      • Ese compromiso se puede señalar desde cualquier número de ramas, es decir, puede formar parte de la historia de cualquier cantidad de ramas, incluida ninguna.
    • Por lo tanto, ejecutar git show <tag> para ver los detalles de una etiqueta no contiene ninguna referencia a ninguna rama, solo la ID de la confirmación a la que apunta la etiqueta.
      • (Los identificadores de confirmación (también conocidos como nombres de objeto o ID de SHA-1) son cadenas de 40 caracteres compuestas de dígitos hexadecimales que son hashes sobre el contenido de una confirmación, por ejemplo: 6f6b5997506d48fc6267b0b60c3f0261b6afe7a2 )
  • Las ramas entran en juego solo de forma indirecta :
    • En el momento de crear una etiqueta , al implicar la confirmación a la que apuntará la etiqueta :
      • No especificar un objetivo para una etiqueta se establece de manera predeterminada en la confirmación más reciente de la rama actual (también conocido como HEAD); p.ej:
        • git tag v0.1.0 # tags HEAD of *current* branch
      • Especificar un nombre de rama como el destino de la etiqueta se establece de manera predeterminada en la confirmación más reciente de esa rama; p.ej:
        • git tag v0.1.0 develop # tags HEAD of ''develop'' branch
      • (Como otros han notado, también puede especificar una ID de confirmación explícitamente como el objetivo de la etiqueta).
    • Al usar git describe para describir la rama actual:
      • git describe [--tags] describe la rama actual en términos de commits desde la etiqueta más reciente [posiblemente ligera] en la historia de esta rama .
      • Por lo tanto, la etiqueta a la que hace referencia git describe NO puede reflejar la etiqueta creada más recientemente en general .