Pregunta

¡Me rindo! Cada vez que trato de presionar me sale un estúpido:

! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'

Nuestro equipo tiene una nueva configuración de git. En lugar de hacer ramas privadas, ahora bifurqué nuestro repositorio principal (en github) para crear mi propia copia.

En algún momento lo que hice fue:

$ git fetch upstream master:upstreammaster

Así que aquí está mi configuración actual ::

$ git branch
master
* upstreammaster

$ git remote -v
origin  git@github.com:userX/projectX.git
upstream    git@github.com:companyX/projectX.git

donde userX es mi repositorio privado.

Así que voy y hago algunos cambios en mi rama upstreammaster, y el PULL de " upstream master " ;. Todo se fusiona y esas cosas:

$ git pull upstream master
remote: Counting objects: 95, done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 60 (delta 54), reused 0 (delta 0)
Unpacking objects: 100% (60/60), done.
From git@github.com:companyX/projectX
 * branch            master     -> FETCH_HEAD
Merge made by recursive.
stuff                      |  165 ++++++++++++--------
stuff                      |   35 ++--
stuff                       |  107 ++++++++++---
stuff                       |  105 ++++++++++---
stuff             |   24 ++--
stuff               |    9 +-
stuff                   |   53 +++----
stuff            |   44 +++---
stuff              |   52 +++----
stuff |   32 +----
stuff          |    4 +-
 stuff             |  138 ++++++++---------
stuff     |   58 ++++----
stuff    |  115 ++++++++------
stuff          |    5 +-
stuff                       |   39 ++---
stuff                        |   28 ++--
 17 files changed, 560 insertions(+), 453 deletions(-)

pero luego cuando trato de hacer:

$ git push upstream master
To git@github.com:companyX/projectX.git
 ! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'

¡Cualquier ayuda sería muy apreciada! Si necesita alguna aclaración, ¡pregunte, le responderé!

¿Fue útil?

Solución

Al realizar una inserción, intente especificar la especificación de referencia para el maestro ascendente:

git push upstream upstreammaster:master

Otros consejos

Jarret Hardie tiene razón. O bien, primero combine sus cambios en master y luego intente el empuje. De manera predeterminada, git push empuja todas las ramas que tienen nombres que coinciden en el control remoto, y ninguna otra. Así que esas son sus dos opciones: especificarlas explícitamente como dijo Jarret o fusionarse de nuevo en una rama común y luego presionar.

Se ha hablado de esto en la lista de correo de Git y está claro que este comportamiento no va a cambiar en el corto plazo: muchos desarrolladores confían en este comportamiento en sus flujos de trabajo.

Editar / Clarificación

Suponiendo que su rama upstreammaster está lista para empujar, entonces podría hacer esto:

  1. Tire de cualquier cambio desde la parte superior.

    $ git pull upstream master

  2. Cambiar a mi rama maestra local

    $ git checkout master

  3. Fusionar cambios en rebase

    $ git merge upstreammaster

  4. Empuje mis cambios hacia arriba

    $ git push upstream

Otra cosa que puede desear hacer antes de presionar es git rebase upstream/master sus cambios contra upstream / master para que sus commits estén todos juntos. Puede hacerlo como un paso separado entre el n. ° 1 y el n. ° 2 anteriores (git pull --rebase upstream master) o puede hacerlo como parte de su extracción (<=>)

Primero, intente extraer de la misma especificación de referencia a la que intenta empujar.

Si esto no funciona, puede forzar un git push usando git push -f <repo> <refspec>, pero tenga cuidado: este método puede hacer que se eliminen las referencias en el repositorio remoto.

Primer uso

git pull https://github.com/username/repository master

y luego intente

git push -u origin master

¿Está su repositorio en " upstream " un repositorio desnudo? Recibí el mismo error, pero cuando cambio a desnudo ya no suceden.

Si la solicitud de inserción se muestra Rechazada, intente primero extraer de su cuenta de github y luego intente insertarla.

Ej:

En mi caso, estaba dando un error-

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/ashif8984/git-github.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

**** Entonces, lo que hice fue - ****

$ git pull
$ git push

Y el código se introdujo correctamente en mi cuenta de Github.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top