2009-06-06 19 views
22

Tengo un repositorio público en github.com con 2 ramas: master y test.Error cuando "git push" a github

he creado un nuevo directorio local y lo hicieron:

[ ] git clone [email protected]:{username}/{projectname}.git 

Entonces creó una nueva rama llamada my_test con

[ ] git branch my_test 

y cambió a él.

[ ] git checkout my_test 

Entonces se fusionaron de mi test rama de mi repositorio público con

[ ] git merge origin/test 

y que dio lugar a un avance rápido.

Hice algunos cambios y los cometí. Luego trató de empujar el my_test rama local de la rama test público en github con

[ ] git push [email protected]:{username}/{projectname}.git test 

pero me dio este error:

error: src refspec test does not match any. 
fatal: The remote end hung up unexpectedly 
error: failed to push some refs to '[email protected]:{username}/{projectname}.git 

¿Qué estoy haciendo mal?

+0

Posible duplicado de [src refspec master no coincide con ninguno al presionar commits en git] (http://stackoverflow.com/questions/4181861/src-refspec-master-does-not -match-any-when-pushing-commits-in-git) –

+0

Posible duplicado de [Error de origen de origen de inserción en el nuevo repositorio] (http://stackoverflow.com/q/827351/456814). –

Respuesta

30

quizás prueba:

git push [email protected]:{username}/{projectname}.git HEAD:test 

El formato del último parámetro en la línea de comandos es una refspec que es una fuente de referencia seguido de dos puntos y luego el árbitro destino. También puede usar su nombre de sucursal local (my_test) en lugar de HEAD para asegurarse de que está presionando la bifurcación correcta.

La documentación para git push contiene más detalles sobre este parámetro.

+0

Eso funcionó. Gracias. – ebsbk

+0

Funcionó como un encanto :) –

+0

No lo entiendo. ¿Por qué funciona cuando uso HEAD, pero no cuando uso el nombre de mi sucursal local? –

17

Además, no necesita escribir la url completa cada vez que desea presionar. Cuando ejecutó el clon, git guardó ese URL como 'origen', por eso puede ejecutar algo como 'fusionar origen/prueba' - significa la rama 'prueba' en su servidor 'de origen'. Por lo tanto, la forma más sencilla para empujar a su servidor en ese caso sería:

git push origin my_test:test 

que empujará a su sucursal local 'my_test' a la rama 'prueba' en su servidor 'origen'. Si había nombrado su sucursal de la misma como la rama en el servidor, a continuación, los dos puntos no es NECESARIO, sólo tiene que hacer:

git push origin test 
1

Creo que aquí se tendrá que configurar el seguimiento de la rama. Por favor, ejecute lo siguiente para habilitar el seguimiento de

git branch --track my_test origin/my_test 

Para probar

git push -u origin my_test 
git pull origin my_test 
1

Este error también aparece si se intenta empujar a un nuevo repositorio sin tener nada cometido en primer lugar.Pruebe:

git add -A 
git commit -am 'Initial commit' 

Y luego vuelva a intentarlo.

0

Debe asegurarse de que su repositorio local tenga el mismo nombre que el repositorio remoto que está tratando de impulsar.

Primero, cambie el repositorio usando git branch -m "test" para que "my_test" sea "prueba". En segundo lugar, solo la prueba de origen de git push