"Se rechazaron las actualizaciones porque la etiqueta ya existe" al intentar insertar SourceTree


117

Cuando intento enviar a través del árbol de origen, aparece el siguiente error:

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/master:refs/heads/master 
Pushing to https://user@github.com/repo.git
To https://user@github.com/repo.git
 = [up to date]      master -> master
...
 ! [rejected]        example_tag -> example_tag (already exists)
updating local tracking ref 'refs/remotes/origin/master'
error: failed to push some refs to 'https://user@github.com/repo.git'
hint: Updates were rejected because the tag already exists in the remote.
Completed with errors, see above

Hasta donde yo sé, no realicé ningún cambio en esta etiqueta. ¿Cómo puedo arreglar esto?

Respuestas:


229

También debería poder resolver esto en git bash (haga clic en el botón "Terminal" en la interfaz de usuario del árbol de fuentes). Tipo:

git pull --tags

3
Siento que esta es la mejor respuesta porque es el camino de menor resistencia.
Chad

40
Con un conflicto, puede hacer git pull --tags -fpara sobrescribir el que tiene localmente si eso es lo que quiere
DenLilleMand

2
En SourceTree, haga clic en Obtener y habilite "Obtener todas las etiquetas". Eso lo haría.
mirada oscura

116

Si no ha realizado ningún cambio local en la etiqueta que desea conservar, puede eliminar la etiqueta que fue rechazada porque ya existe ( example_tagen este caso):

  1. Haga clic con el botón derecho en la etiqueta y elija eliminarla (asegúrese de desmarcar la casilla de verificación Eliminar etiqueta de todos los controles remotos ).
  2. Elija la opción Obtener (Obtener y almacenar todas las etiquetas localmente no tiene que estar habilitado).
  3. Ahora debería tener esa etiqueta que se acaba de eliminar y, al intentar Push , ya no se mostrará ese mensaje de error.

La razón de esto es común en SourceTree es debido a que el empuje todas las etiquetas de opción se establece en forma predeterminada. (Otra forma de ocultar este error es desmarcar esa opción).


"Obtener y almacenar todas las etiquetas localmente no tiene que estar habilitado" es lo que hizo por mí, comprobando que solo provocó que el problema se repitiera.
Tom

Suponiendo que el repositorio ascendente (origen) es la fuente de la verdad, esta solución es la menos destructiva y soluciona el problema al instante.
Steve Henty

Desafortunadamente, cuando tiene 15 etiquetas rechazadas, los pasos 1, 2 y 3 pueden ser muy tediosos. Sí, deshabilitar la opción "Insertar todas las etiquetas" es probablemente la forma correcta de hacerlo.
SagiSergeNadir

27

Desmarque push all tagsen la parte inferior de la interfaz de usuario cuando confirme su git push


¿Quiso decir push all tags?
Wodin

¡Excelente! No lo observé. Gracias
Meg-90

@Wodin, por lo que si marca push all tagsla interfaz de usuario, intentará sobrescribir las etiquetas anteriores. pero tienes que DESMARCARlo para evitar que se sobrescriba
JDev-Guns

@ JDev-Guns Solo estaba preguntando la redacción. Originalmente dijiste push all TABs. No estoy familiarizado con SourceTree, pero sospeché que te referías en TAGslugar de TABs.
Wodin

@Wodin, ¡oh, te tengo! Creo que dije TAGspero si ni me, quiero decirTABs
JDev-Armas

15

git pull --tagsfunciona muy bien, pero a veces puede obtener un error incluso con este comando. Mensaje de error de ejemplo:

 ! [rejected]        example_tag      -> example_tag  (would clobber existing tag)

Esto se puede solucionar con el comando: git pull --tags -f

Fuente:

https://github.com/concourse/git-resource/issues/233


14

Asegúrese de desmarcar el botón "Presionar todas las etiquetas" mientras presiona.

ingrese la descripción de la imagen aquí


Como se mencionó anteriormente, si agregó una nueva etiqueta localmente, ¿no significa esto que no se envía al control remoto?
bytedev

0

Sí, de hecho, primero tire de las etiquetas antes que usted push --tags. Resolvió mi problema.


-1

Resuelvo el problema en SourceTree de esta manera:

  1. Eliminar la etiqueta con la selección "Eliminar la etiqueta de todos los controles remotos"
  2. Recreando la etiqueta
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.