2010-12-28 11 views
16

me siguen dando este mensaje de error git mientras empuja, yo estoy tratando que después de tirar una y otra vez:no puede empujar al repositorio git

 ! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[repo url]' 
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.

Esto es lo que la historia rama se ve así:

A---B---C 
    | | 
    D E-F 

A initial commit (me) 
B some commit (me) 
C master 
D some commit (other dev) 
E remotes/origin/master - Merge branch 'master' of [repo url] 
F Local uncommitted changes, not checked into an index 

A partir de aquí, cuando tire, nada viene. Cuando presiono, obtengo el error. ¿Cómo puedo presionar nuevamente?

+0

¿Es posible que alguien que no sea usted realice algunos cambios que eliminen las entradas del historial antiguo, como aplastar confirmaciones con rebase? – ismail

+0

No creo que "el otro desarrollador" al que me refiero tenga el conocimiento para hacerlo :) Pero si es así, ¿cómo puedo salir de esto? –

+2

Me gustaría modificar mis cambios a algún archivo, probar un nuevo clon git, aplicar mis cambios con el parche (1) e intentar presionar de nuevo. – ismail

Respuesta

6

Necesita ancestro común antes de presionar, la forma más fácil es hacer git pull (o git pull --rebase si desea evitar la fusión de confirmación y rebase no es un problema para usted).

4

La solución a su problema es:

  1. "Commit" los cambios para que éstos se comprometen a su repositorio local.
  2. Luego, "extraiga" el código del servidor github/git
  3. Luego, "presione" el código al servidor github/git y no tendrá problemas.

Leer más en la partida "Empujar un Poder" en la siguiente URL:

Dealing with "non-fast forward rejects"

espero que ayude.

Gracias

5

Tenía este problema exacto, fue debido a lo siguiente:

Una rama local en mi máquina (con diferente origen) que no ha sido actualizada (y que había sido modificado por otro usuario) . Debes moverte a la rama que no se ha actualizado (git checkout [branch in question]) y hacer un git pull.

Eso resolvió mi problema. En este caso particular, debido a este mensaje

"! [Rejected] master -> master (non-fast-forward)!"

Debe pasar a la rama principal (maestro de comprobación de git) hacer un git pull, luego volver a la rama en la que está trabajando (git checkout cualquiera rama) y ahora debería poder hacer un push sin problemas.

No estoy seguro de por qué sucede esto; Es posible que la naturaleza de git push sea verificar todas las sucursales locales que no se actualizan correctamente al hacer un push.

Cuestiones relacionadas