Pregunta No puedo presionar a GitHub, sigue diciendo que necesito unirme


Soy nuevo en GitHub. Hoy me encontré con un problema cuando estaba tratando de pasar mi código a GitHub.

Pushing to git@github.com:519ebayproject/519ebayproject.git
To git@github.com:519ebayproject/519ebayproject.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:519ebayproject/519ebayproject.git'
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.

Todavía no he insertado nada en el repositorio, entonces ¿por qué necesito extraer algo?


598
2018-04-24 12:56


origen


Respuestas:


Esto puede causar que el repositorio remoto pierda commits; Úselo con cuidado.

Si no desea fusionar la sucursal remota en su sucursal local (consulte las diferencias con git diff), y quiere hacer un empuje de fuerza, use el comando push con -f

git push -f origin <branch>

dónde origin es el nombre de tu remoto repo.

Por lo general, el comando se niega a actualizar una referencia remota que no sea un antecesor de la referencia local utilizada para sobrescribirla. Esta bandera desactiva el cheque. Esto puede causar que el repositorio remoto pierda commits; Úselo con cuidado.


608
2017-08-08 20:08



Como el mensaje te dice,

Combina los cambios remotos (por ejemplo, 'git pull')

Utilizar git pull para extraer los últimos cambios del repositorio remoto a su repositorio local. En este caso, los cambios de extracción requerirán una combinación porque ha realizado cambios en su repositorio local.

Proporcionaré un ejemplo y una imagen para explicar. Supongamos que su última extracción de origen / sucursal fue en el Compromiso B. Usted ha completado y comprometido algún trabajo (Compromiso C). Al mismo tiempo, alguien más completó su trabajo y lo envió al origen / rama (Compromiso D). Deberá haber una fusión entre estas dos ramas.

local branch:                         --- Commit C 
                                    /
                                   /
                                  /
origin/branch: Commit A ------ Commit B ---- Commit D

Como tú eres el que quiere empujar, Git te obliga a realizar la fusión. Para hacerlo, primero debe extraer los cambios de origen / rama.

local branch:                         --- Commit C -- Commit E
                                    /               /           
                                   /               /             
                                  /               /               
origin/branch: Commit A ------ Commit B ---- Commit D 

Después de completar la fusión, ahora se le permitirá avanzar rápidamente de origen / rama a Commit E presionando sus cambios.

Git requiere que manejes las fusiones tú mismo, porque una combinación puede generar conflictos.


214
2018-04-24 13:01



¿Has actualizado tu código antes de presionar?

Utilizar git pull origin master antes de empujar nada

Supongo que estás usando origin como un nombre para tu control remoto.

Es necesario tirar antes del envío, para actualizar su repositorio local antes de enviar algo (solo en caso de que alguien más haya actualizado el código en github.com) Esto ayuda a resolver conflictos localmente.


185
2018-04-24 13:01



Esto normalmente sucede cuando git commit y tratar de git push cambios antes git pulling en esa rama x donde alguien más ya ha hecho cambios.

El flujo normal sería el siguiente, 

PASO 1: git stash sus cambios locales no confirmados en esa rama.

PASO 2: git pull origin branch_name -v a pull and merge a cambios localmente comprometidos en esa rama (Dale un mensaje a esta fusión y arregla los conflictos, si hay alguno.)

PASO 3: git stash pop el stashcambios ed (Luego puede realizar confirmaciones en los archivos reventados si quiere o empujar los cambios ya comprometidos (PASO 4) primero y realizar nuevos compromisos con los archivos más adelante.)

ETAPA 4: git push origin branch_name -v los cambios fusionados.

Reemplazar branch_name con master (para master rama).


116
2018-06-03 18:09



A veces olvidamos el tirón e hicimos muchos trabajos en el entorno local.

Si alguien quiere presionar sin tirar,

git push --force

está trabajando. Esto no se recomienda cuando se trabaja con otras personas, pero cuando su trabajo es una cosa simple o un proyecto de juguete personal, será una solución rápida.


44
2017-07-29 16:17



Algunos de ustedes pueden estar recibiendo este error porque Git no sabe qué rama están tratando de impulsar.

Si su mensaje de error también incluye

error: failed to push some refs to 'git@github.com:jkubicek/my_proj.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. If you did not intend to push that branch, you may want to
hint: specify branches to push or set the 'push.default' configuration
hint: variable to 'current' or 'upstream' to push only the current branch.

entonces es posible que desee seguir los consejos útiles de Jim Kubicek, Configure Git para que solo presione la rama actual, para establecer la rama predeterminada a la actual.

git config --global push.default current

31
2017-11-19 06:14



Además de las respuestas anteriores, lo siguiente funcionó para mí:

Escenario -

  1. empuje my_branch a origen con éxito.
  2. Hice algunos cambios más.
  3. Cuando intenté volver a presionar, (después de hacer add, commit por supuesto), obtuve el error mencionado anteriormente.

Solución -

 1. git checkout **my_branch**
 2. git add, commit your changes.
 3. git pull origin **my_branch** (not origin, master, or develop)
 4. git push origin **my_branch**

Proof


16
2018-01-20 09:17



git pull origin branch_name --rebase

Esto funcionó para mí: el comando git pull origin branch_name --rebase tirará los cambios de remote branch_name al principio, luego rebase rama actual en la parte superior de la misma.


14
2017-11-24 07:16



Tuve el mismo problema, lo que hice fue presionarlo por la fuerza al usar esto

git push --force

Hice esto después de que envié los archivos y recibí un error. Obtuvo todos los archivos y los presionó. Luego, la próxima vez que estaba empujando al github. Hice lo que me pidió y estaba bien entonces. Espero que esto funcione para usted también :)


14
2018-02-11 14:57



Mencioné esto en mi tutorial, Cómo usar GitHub: un tutorial para principiantes.

Cuando crea un nuevo repositorio en GitHub, GitHub puede pedirle que cree un archivo Léame. Si crea un archivo Léame directamente en GitHub, primero tendrá que hacer una solicitud de "extracción" antes de que la solicitud de "inserción" sea exitosa. Estos comandos 'extraerán' el repositorio remoto, lo fusionarán con sus archivos actuales y luego 'enviarán' todos los archivos nuevamente a GitHub:

git pull https://github.com/thomas07vt/MyFirstRepo.git master

git push https://github.com/thomas07vt/MyFirstRepo.git master

11
2018-01-25 06:02



git push -f origen nombre de rama

Utilice el comando anterior solo si está seguro de que no necesita un código de sucursal remoto; de lo contrario, primero fusione y luego presione el código.


6
2017-08-22 12:15