2011-08-29 9 views
21

Empecé a obtener el error 'fallo al presionar algunos refs' cuando cambié algunos archivos y traté de hacer push. La mayoría de las instrucciones dicen que primero debes hacer git pull. Lo he hecho y git dice que todo está actualizado. Alguna idea de como resolver el error? También comencé a recibir el mensaje "no hay información de versión disponible", no sé si tiene algo que ver con el error.Git: no pude presionar algunos refs aunque he hecho git pull

git push origin master 
git: /usr/local/lib/libz.so.1: no version information available (required by git) 
Enter passphrase for key '/root/.ssh/id_rsa': 
To [email protected][mydomain].beanstalkapp.com:/repo-git.git 
! [rejected]  master -> master (non-fast forward) 
error: failed to push some refs to '[email protected][mydomain].beanstalkapp.com:/repo-git.git' 
+0

¿Qué pasa si usted clona el repositorio en otro ubicación y tr y presionarlo? – Intrepidd

Respuesta

32

El error es que alguien más ha empujado en la rama master y usted podría sobrescribir su cambio si git permitió que empuje (esto es lo que significa non-fast forward error). Por lo tanto, debe fusionar su sucursal local master con la sucursal master remota.

Esto puede suceder si se hizo el git pull mientras que la rama local no era la rama master. Si sólo quiere empujar la rama que se está trabajando y no a la rama master, es necesario decirle a git usando la forma completa de git-push:

$ git push remote local-branch:remote-branch 
+0

¿Cómo fusionaría la rama principal local con la rama principal remota? De todos modos, noté con la rama git que estaba usando una rama llamada (Sin rama). hice checkout master y ahora que puedo hacer push/pull – jjei

+1

Al hacer 'pull' git, hace un 'git fetch' seguido por un' git merge' con la rama remota la rama actual es el seguimiento. Puede hacer una fusión manual con 'git merge master'. –

1

Asegúrese de verificar que el tirón efectivamente trabajadas. Es posible que la fusión (que es parte de un tirón) haya fallado.

Cuando tuve este mensaje de error, no me di cuenta de que la extracción había fallado. La extracción falló debido a algunos cambios de archivos no comprometidos (no relacionados con los archivos que intentaba impulsar) lo que provocó que la combinación fallara. Revertí esos cambios de archivos (porque no eran importantes) y luego hice un pull nuevamente. Después de la extracción exitosa, el empuje funcionó.

5

La mejor respuesta posible está en Git ayuda here

Tratar con errores no avance rápido

De vez en cuando, se puede encontrar este error mientras empuja commit (git push origin master) a GitHub:

To https://github.com/user/repo.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to 'https://github.com/user/repo.git' 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes (e.g. 'git pull') before pushing again. 
See the 'Note about fast-forwards' section of 'git push --help' for details. 

Este error puede ser un poco abrumador al principio; ¡no temas!

En pocas palabras, Git no puede realizar el cambio en el control remoto sin perder compromisos, por lo que rechaza el envío. Por lo general, esto es causado por otro usuario que empuja a la misma rama.

Usted puede remediar esto por ir a buscar y la fusión de la rama remota:

git fetch origin 
git merge origin master 

O bien, puede simplemente usar git pull para llevar a cabo los dos comandos a la vez:

git pull origin master 

En algunos casos, esto error es el resultado de cambios destructivos realizados localmente mediante el uso de comandos como git commit --amend o git rebase. Si bien puede anular el control remoto agregando --force al comando push, solo debe hacerlo si está absolutamente seguro de que esto es lo que desea hacer. Los empujones forzados pueden causar problemas a otros usuarios que han buscado la rama remota, y se consideran malas prácticas. En caso de duda, no presione la fuerza.

+0

fusión: origen - no es algo que podemos combinar – Makalele

1

Además, el error ocurre cuando coloca el nombre de la rama incorrecta en su comando de inserción.

Por ejemplo, supongamos que está en una rama llamada iss8, pero le dice a git que presione iss3 (como acabo de hacer), obtendrá el mismo error.

$ git push origin iss3 
error: src refspec iss3 does not match any. 
error: failed to push some refs to '[email protected]:myuser/myproject.git' 

Hmm, comprobar el estado:

$ git status 
On branch iss8 
nothing to commit, working directory clean 

Oh, mira, estoy en una rama diferente. Gracias, idiota por no dejarme hacer algo realmente tonto.

$ git push origin iss8 
Counting objects: 15, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (9/9), done. 
Writing objects: 100% (9/9), 2.62 KiB | 0 bytes/s, done. 
Total 9 (delta 3), reused 0 (delta 0) 
To [email protected]:myuser/myproject.git 
* [new branch]  iss8 -> iss8 
2

Asegúrese de que su bifurcación no esté protegida, o que el desarrollador pueda empujar esté marcado.

+3

Esto no es un comentario una respuesta – STF

0
1) git stash 
2) git pull 
3) git push 

Mi error original:

enter image description here

Después de "escondite git"

enter image description here

0

tratar este comando git push -f origin master

Cuestiones relacionadas