2010-11-30 18 views
28

Acabo de sacar una nueva rama, hice algunos cambios locales, me comprometí e intenté impulsar. Me dieron este error: ! [rejected] groups -> groups (non-fast forward) Así que traté de tirar, pero me dijeron Already up-to-date.git pull dice actualizado, pero git push rechaza el avance no rápido

Esto es lo que obtengo tirando y empujando.

~/dev$ git pull origin groups 
Already up-to-date. 
~/dev$ git push origin groups 
To /mnt/ebs/git/repo.git 
! [rejected]  groups -> groups (non-fast forward) 
error: failed to push some refs to '/mnt/ebs/git/repo.git' 

¿Alguien puede explicarme cómo puede estar pasando esto y cómo puedo solucionarlo?

+0

intente ejecutar git push con -v –

+0

@dan: -v no da más salida que la ruta al repositorio nuevamente. 'Empujando a/mnt/ebs/git/repo.git' – Jake

+0

me gustaría ver los hashes de las cabezas de los grupos en ambos repositorios que deberían coincidir, pero si no lo hicieran, sería el error correcto si no lo hicieran y el control remoto no era un prefijo del –

Respuesta

18

Cuando sacó la rama, usó la opción "--track" (para mantener su rama local rastreando la rama remota). Si no lo hizo, puede explicar que el comando "fusionar" no funciona.

Puede hacer la fusión de forma manual:

git fetch 
git merge origin/groups 

Para comparar los repositorios locales y remotos, te sugiero este comando (añadirlo en un alias, es muy útil):

git log --graph --oneline --all --decorate 

Se imprimirá el árbol del historial del proyecto, mostrando las etiquetas de las ramas. Entonces verás dónde divergen tu rama y la rama de origen.

Nota: si desea conservar una historia lineal, en lugar de una "fusión", que puede hacer un "reajustar" de su sucursal local en el control remoto antes de empujar:

git rebase origin/groups 
git push origin groups 
+0

Nunca he tenido suerte con -graph, tengo la última versión de git hasta donde yo sé, pero dice que es un argumento no reconocido. – Jake

+2

Resulta que tenía una sucursal local llamada origen/grupos, así como una remota. – Jake

5

Vine aquí con un problema diferente

Mi git fue configurado para empujar todas las ramas. Yo estaba en una rama FOO, pero también estaba tratando de enviar master, que no estaba actualizado. El truco estaba notando que estaba tratando de empujar principal:

To [email protected]:repo 
! [rejected]  master -> master (non-fast-forward) 

que añade lo siguiente a mi .gitconfig sólo empujar la rama actual por defecto:

[push] 
    default = current 
2

Ésta no es una respuesta a la pregunta preguntó. Tuve un problema diferente con el mismo mensaje de error.

Mi sucursal local no tenía la rama remota para que los cambios se configuraran correctamente [git pull]. Esto fue evidente a partir del o/p de git remote show origin. Entonces, tuve que usar git pull origin <branch_name> en lugar de git pull para extraer los cambios.

+0

Hola, Garnet, este parece ser el mismo problema que el mío. Quiero saber cuál podría ser la solución para mapear mi rama actual con control remoto ... –

+0

Hola Mukesh, no he intentado agregar la asignación. Acabo de especificar el alias de repo remoto 'origen' y hice el git pull como se menciona en la respuesta: 'git pull origen ' en lugar de 'git pull' para extraer los cambios. – garnet

+0

Gracias Garnet por responder. Esa solución parece estar funcionando para mí. Sin embargo, necesito un comando para configurarlo para git pull sin origen. Debería funcionar como solía hacerlo. –

Cuestiones relacionadas