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).
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.