tag - ¿Cómo se empuja una etiqueta Git a una rama usando una refspec?
qué tipos de etiquetas existen en git (4)
Quiero forzar el empuje, por ejemplo, mi etiqueta 1.0.0
a mi rama master
remota.
Ahora estoy haciendo lo siguiente:
git push production +1.0.0:master
Quiero forzar el empuje , porque lo único que me importa es que el código dentro de la etiqueta 1.0.0
se inserte en la rama master
en el repositorio remoto.
¿Qué estoy haciendo mal?
Actualización # 1
Cuando hago SSH en mi servidor donde está mi repositorio Git y ejecuto git branch -l
, tampoco veo la rama master
lista.
Actualización # 2
Después de ejecutar git tag -l
desde dentro del repositorio remoto de Git, veo que el master
está en la lista, lo que significa que cuando ejecuté lo siguiente:
git push production 1.0.0:master
En realidad empujó la etiqueta y creó una etiqueta llamada master
lugar de una nueva rama .
Básicamente quiero insertar el contenido de la etiqueta 1.0.0
en la rama master
del repositorio Git remoto.
Creo la etiqueta como esta y luego la empujo a GitHub:
git tag -a v1.1 -m "Version 1.1 is waiting for review"
git push --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 180 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To [email protected]:neoneye/triangle_draw.git
* [new tag] v1.1 -> v1.1
Para empujar una sola etiqueta: git push <reponame> <tagname>
Por ejemplo, git push production 1.0.0
. Las etiquetas no están vinculadas a las ramas, están vinculadas a las confirmaciones.
Cuando desee tener el contenido de la etiqueta en la rama maestra, hágalo localmente en su máquina. Supongo que continuó desarrollando en su rama maestra local. Entonces solo un git push origin master
debería ser suficiente.
Probablemente está fallando porque 1.0.0
es una etiqueta anotada. Quizás viste el siguiente mensaje de error:
error: al intentar escribir un objeto no confirmado en la rama refs / heads / master
Las etiquetas anotadas tienen su propio tipo de objeto distinto que apunta al objeto de confirmación etiquetado. Las ramas no pueden apuntar de manera útil a los objetos de etiquetas, solo los objetos de confirmación. Necesita "pelar" la etiqueta anotada para cometer el objeto y empujar eso en su lugar.
git push production +1.0.0^{commit}:master
git push production +1.0.0~0:master # shorthand
Hay otra sintaxis que también funcionaría en este caso, pero significa algo ligeramente diferente si el objeto de etiqueta apunta a algo distinto de un compromiso (o un objeto de etiqueta que apunta a (un objeto de etiqueta que apunta a un…) un compromiso) .
git push production +1.0.0^{}:master
Estas sintaxis de pelado de etiquetas se describen en git-rev-parse(1) en Especificar revisiones .
git push --tags production