Error de git: no se pudieron enviar algunas referencias al control remoto

Resuelto leipzy asked hace 10 años • 69 respuestas

No puedo empujar ahora, aunque pude hacerlo ayer.

Cuando uso me git push origin mastersale un error:

$ git remote -v
origin  https://github.com/REDACTED.git (fetch)
origin  https://github.com/REDACTED.git (push)

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

Cómo se ven mi directorio de trabajo y repositorio remoto:

Captura de pantalla de la carpeta de archivos de Windows con estos directorios: .git, css, js.  Y estos archivos: index.php, readme, setsu.php.  La palabra "local" con una flecha apunta a la carpeta css.  A continuación, captura de pantalla con el título "github" y una carpeta css y un archivo index.php

leipzy avatar Jun 09 '14 13:06 leipzy
Aceptado

(Nota: a partir de octubre de 2020 , cualquier repositorio nuevo se crea con la rama predeterminada main, no master. Y puede cambiar el nombre de la rama predeterminada del repositorio existente de masteramain .
El resto de esta respuesta de 2014 se actualizó para usar " main")

(Lo siguiente supone github.comque no está caído, como señala eri0o en los comentarios : consulte www.githubstatus.compara estar seguro)

Si se enviaron nuevas confirmaciones al repositorio de GitHub mientras trabajaba localmente, le recomendaría usar:

git pull --rebase
git push

La sintaxis completa es:

git pull --rebase origin main
git push origin main

Con Git 2.6+ (septiembre de 2015), después de haberlo hecho (una vez)

git config --global pull.rebase true
git config --global rebase.autoStash true

Un simple git pullsería suficiente.
(Nota: con Git 2.27 Q2 2020 , a merge.autostashtambién está disponible para su extracción regular, sin rebase)

De esa manera, reproduciría (la --rebaseparte) sus confirmaciones locales además de las recién actualizadas origin/main(o origin/yourBranch:) git pull origin yourBranch.

Vea un ejemplo más completo en el capítulo 6 Pull with rebase del Git Pocket Book .

Yo recomendaría un:

# add and commit first
#
git push -u origin main

# Or git 2.37 Q2 2022+
git config --global push.autoSetupRemote true
git push

Eso establecería una relación de seguimiento entre su sucursal principal local y su sucursal ascendente.
Después de eso, cualquier impulso futuro para esa rama se puede realizar con un simple:

git push

Nuevamente, con Git 2.37+ y su opción globalpush.autoSetupRemote , un simple git pushincluso para el primero haría lo mismo (es decir, establecer una relación de seguimiento entre su mainsucursal local y su sucursal ascendente origin/main).

Consulte "¿ Por qué necesito impulsar explícitamente una nueva rama? ".


Dado que el OP ya reinició y rehizo su confirmación además de origin/main:

git reset --mixed origin/main
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git push origin main

No hay necesidad de pull --rebase.

Nota: git reset --mixed origin/maintambién se puede escribir git reset origin/main, ya que la --mixedopción es la predeterminada cuando se usa git reset.

VonC avatar Jun 09 '2014 06:06 VonC

Intentar:

git push -f origin master

Eso debería resolver el problema.

Basado en el comentario de @Mehdi, una aclaración sobre —force pushing: ​​El comando Git anterior funciona de forma segura solo para la primera confirmación. Si ya hubo confirmaciones, solicitudes de extracción o ramas en el pasado, esto lo restablece todo y lo establece desde cero. Si es así, consulte la respuesta detallada de @VonC para obtener una mejor solución.

cagcak avatar Mar 18 '2017 13:03 cagcak

Si acaba de usar git inity agregó sus archivos git add .o algo similar y agregó su rama remota, es posible que simplemente no haya confirmado ( git commit -m 'commit message') nada localmente para enviar al control remoto... Acabo de recibir este error y ese fue mi asunto.

ironcladmvtm avatar May 22 '2015 18:05 ironcladmvtm

Yo tuve el mismo problema. Tenía este problema porque no había realizado ninguna confirmación, ni siquiera una confirmación inicial, y todavía estaba intentando presionar.

Una vez que lo hice git commit -m "your msg", todo funcionó bien.

pramodpxi avatar Jan 04 '2017 13:01 pramodpxi