"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://[email protected]/repo.git
To https://[email protected]/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://[email protected]/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?

Sentido
fuente

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
bytedev
fuente
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).

Sentido
fuente
"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

JDev-Guns
fuente
¿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

Ogglas
fuente
14

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

ingrese la descripción de la imagen aquí

Sudheer Kumar Palchuri
fuente
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.

YoungJeXu
fuente
-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
Marco Barbero
fuente