Pregunta git push rama local con el mismo nombre que la etiqueta remota


Estoy tratando de impulsar una nueva sucursal local product-0.2 a distancia donde ya hay una etiqueta con el mismo nombre (pero la rama en sí no existe)

git push -v --tags --set-upstream origin product-0.2:product-0.2 
Pushing to https://****@github.com/mycompany/product.git
error: src refspec product-0.2 matches more than one.
error: failed to push some refs to 'https://****@github.com/mycompany/product.git'

Lo mismo con:

git push origin product-0.2:/refs/heads/product-0.2 

Aunque al revés funciona, p. crear una rama product-0.1, comprométalo y luego aplica una etiqueta product-0.1.

Algunas personas trabajan en esto eliminando la etiqueta conflictiva localmente, luego presionan la rama y luego recuperan la etiqueta remota, pero parece engorrosa y propensa a errores.

¿Cómo puedo crear mi sucursal con un mínimo esfuerzo?

Gracias por tu contribución


75
2018-02-21 13:54


origen


Respuestas:


El siguiente comando debería funcionar.

git push origin refs/heads/product-0.2:refs/heads/product-0.2 

113
2018-02-21 17:38



Verifica qué etiquetas están asociadas a tu sucursal:

git tag

En mi caso, tenía una etiqueta con el mismo nombre de la sucursal. Eliminarlo funcionó:

git tag -d [tag-name]

21
2018-04-17 16:09



Cambia los nombres.

Ya sea que lo haga de manera local o remota, simplemente cambie los nombres.

Una etiqueta y una rama son básicamente lo mismo en git: representan un puntero a una confirmación. La diferencia es que un puntero de rama avanza a medida que realiza confirmaciones, mientras que una etiqueta permanece estática.

sin embargo, puedes realizar un git checkout ya sea en una rama o una etiqueta. ¿Por qué pelearías con todos estos nombres duplicados? Cámbialos.


14
2018-02-21 17:44



Intenté ingresar a un repositorio canónico esta mañana y obtuve el siguiente error:

$ git push origin master
error: src refspec master matches more than one.
error: failed to push some refs to 'ssh://user@host/srv/git/repo'

Esto sucedió porque accidentalmente había creado una etiqueta maestra localmente:

$ git tag
master
tag1
tag2
tag3
tag4

Una vez que eliminé esta etiqueta localmente:

git tag -d master

Pude empujar de nuevo.


7
2018-06-01 06:19



Esto falló:

git push $origin $branch:$branch 

Mientras esto funcionó para mí:

git checkout $branch
git push $origin HEAD:$branch

4
2018-01-29 14:22