Error al enviar a GitHub usando Git para Windows

2 minutos de lectura

avatar de usuario
Jakob Jenkov

Creé un repositorio de Git en GitHub y también un repositorio local. Primero saqué el repositorio remoto al local. Luego agregué un archivo, lo arreglé, lo confirmé y ahora trato de hacer un envío al repositorio remoto nuevamente, pero falla con este mensaje:

Pushing to https://github.com/jjenkov/java-utils
To https://github.com/jjenkov/java-utils
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/jjenkov/java-utils'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Soy completamente nuevo en Git y Github, así que tal vez esté haciendo algo mal. He “buscado” el repositorio remoto en el local, aunque el repositorio remoto debería estar vacío (excepto por un archivo Léame generado por GitHub).

¿Alguien sabe cuál es el problema o dónde puedo leer una solución?

El repositorio remoto no está vacío; contiene un README que probablemente creó a través de la interfaz web de GitHub. Tienes que tirar de él antes de poder empujarlo:

git pull --rebase origin master
git push

(Él --rebase no es estrictamente necesario, pero evita una confirmación de combinación fea).

avatar de usuario
greg tocino

Una pulsación sin avance rápido significa que el control remoto master no es un antepasado de su local master. Git rechaza el empuje como mecanismo de seguridad para evitar la destrucción del trabajo.

la salida de git log --graph --decorate --pretty=oneline --abbrev-commit --all le dará una representación gráfica de la historia de su repositorio. Si está seguro de que no le importa reemplazar o destruir lo que está en GitHub, ejecute

$ git push --force origin master

Él --force la opción está documentada como (con énfasis añadido)

-f, --force

Por lo general, el comando se niega a actualizar una referencia remota que no sea un ancestro de la referencia local utilizada para sobrescribirla. Esta bandera deshabilita la verificación. Esto puede hacer que el repositorio remoto pierda confirmaciones; utilícelo con cuidado.

Para mantener lo que está allí, deberá volver a establecer la base de su maestro local sobre el de GitHub y luego enviar el resultado.

$ git fetch
$ git rebase origin/master master
$ git push origin master

o solo

$ git checkout master
$ git pull --rebase

La secuencia anterior es el caso de un día soleado. Es posible que deba resolver conflictos, pero eso parece poco probable dada su descripción.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad