2012-09-02 14 views
20

¿Cómo resuelvo este problema? Estoy intentando comprometer pero obtengo el siguiente error.Se rechazaron las actualizaciones Git de avance rápido Fusionar los cambios remotos

git push origin monty_svm_dev

To [email protected]: ! [rejected]  monty_svm_dev -> monty_svm_dev 
(non-fast-forward) error: failed to push some refs to 
'[email protected]:/mygit.git' To prevent you from losing history, 
non-fast-forward updates were rejected Merge the remote changes before 
pushing again. See the 'Note about fast-forwards' section of 'git 
push --help' for details. [email protected]:~/mypath# 

Respuesta

25

hacer git pull origin monty_svm_dev primera

Lo que ha sucedido es que el mando a distancia tiene cambios más recientes que su rama.

Para poder push sus cambios, primero debe obtener y fusionar los cambios en el control remoto.

Usted puede hacer esto ya sea haciendo una git checkout your_branch, entonces:

git fetch origin your_branch y luego un
git merge your_branch

o

git pull origin your_branch # fetch and merge in one operation 

Cuando su rama es maestro, o el nombre de la rama (parece ser monty_svm_dev en su caso, creo)

Una vez hecho esto (y cualquier conflicto resuelto) se puede hacer un git push origin monty_svm_dev

+0

O bien, el OP podría haber modificado su rama. – knittl

+0

He oído que tirar es malo porque se fusionará de una manera que generalmente no deseas. Peronalmente, me gusta mantener mi historia lineal. ¿Cómo lo logro cuando me encuentro con el mismo error que el asker? –

+0

intenté #git pull origen devops_branch_22112016 obteniendo error: sus cambios locales en los siguientes archivos se sobrescribirán por fusión: www/index.html Por favor, confirme sus cambios o destrúyalos antes de que pueda fusionar. Anulando –

2

Básicamente porque cuando

git pull

de una rama, dos operaciones tienen lugar traiga y fusionar. Ahora, si su local tiene algunos cambios, entonces git no le permitirá presionarlo antes de comprometer sus cambios.

También aparece este problema si el control remoto tiene cambios que aún no se han extraído en local y se han fusionado, por lo que debe tomar una nueva extracción y luego presionarlo. Responde si no resuelve el problema

0

Haz una tirada Git. Luego, traerá cambios recientes de código en la rama remota a su local. entonces eres capaz de impulsar tus cambios.

+1

Esta respuesta ya se ha brindado y en más detalle (https://stackoverflow.com/a/12236918/1590950). Si desea expandir y hacer que su respuesta ofrezca algo que el otro no siga adelante. – indivisible

0

Este problema surge cuando el usuario olvida emitir el comando git push después del comando git commit. Cuando use git, por favor siempre asegúrese de los pasos básicos.

In an ideal cycle while working with git, always check the following git commands were used sequentially in the following order:

git pull 
git add 
git commit 
git push 

Personalmente evito mayoría de los temas publicados sobre git en la pila, porque siempre Flirteo con mis acitivites comando git a la secuencia anterior.

creé un acrónimo para asegurarse de que no se olvide, yo estoy hopoing lo mismo puede ser de utilidad para el lector que es:

pacp (read it as: pack push where (p=git push, a=git add, ck=git commit, push=git push).

Mi manera de memorizar el git push, agregar, comprometerse, pull es:

get pack push (meaning: git the pack and then push).

En resumen, recuerde "git" el paquete y luego "push".

La resolución de los problemas: me gustaría añadir mis comandos git recuperación más utilizados que son:

git checkout -- path/to/file/fileName.something #undo changes in file 

The above undoes the changes in a file...similar can be applied for multiple files using * for file name, similarly can be applied to multiple directories separated by space.

git reset filename.txt 

The above removes the file from stage...after this command we can safely do git commit and git will only commit those files we are in stage which means the file "filname.txt" won't get committed)

git pull origin your_intended_branch 

Los cambios se fusionaron con lo último de your_intended_branch esto básicamente combina el cambio que cometiste pero no empujaste. Una vez que todo vaya bien, simplemente haga el push:

git push 
Cuestiones relacionadas