Github "Las actualizaciones fueron rechazadas porque el control remoto contiene trabajo que usted no tiene"


177

Creé un nuevo repositorio, lo cloné, agregué archivos al directorio, los agregué add -A, cometí cambios, y cuando trato de presionar usando git push <repo name> masterobtengo "Las actualizaciones fueron rechazadas porque el control remoto contiene trabajo que usted no tiene".

Esto no parece tener sentido ya que es un nuevo repositorio y contiene solo un archivo Léame.

Respuestas:


309

Esto sucede si inicializó un nuevo repositorio de github con READMEy / o LICENSEarchivo

git remote add origin [//your github url]

//pull those changes

git pull origin master 

// or optionally, 'git pull origin master --allow-unrelated-histories' if you have initialized repo in github and also committed locally

//now, push your work to your new repo

git push origin master

Ahora podrá empujar su repositorio a github. Básicamente, debe fusionar esos nuevos archivos inicializados con su trabajo. git pullbusca y se fusiona para ti. También puede buscar y fusionar si eso le conviene.


77
Creé un video de YouTube con una explicación más detallada y dos formas sugeridas para evitar este problema en primer lugar.
Kevin Markham

16
Para el comando de combinación necesito usargit pull origin master --allow-unrelated-histories
Luciano Marqueto

Me pongo "fatal: negarme a fusionar historias no relacionadas"
Sergi

44
@Sergi trygit pull origin master --allow-unrelated-histories
palerdot

101

El error posiblemente se deba a la diferente estructura del código que está cometiendo y que está presente en GitHub. Crea conflictos que pueden resolverse mediante

git pull

Combinar resolución de conflictos:

git push

Si confirma que su nuevo código está bien, puede usar:

git push -f origin master

Donde -fsignifica "forzar compromiso".


13
'git push -f origin master' -esto ayuda
Saurabh

44
git push -f sobrescribe el historial remoto con su historial local, tenga cuidado al usarlo. Especialmente en repositorios públicos.
Andre

updates-were-rejectedtambién ocurre si realizó cambios en el repositorio de github en el control remoto, por ejemplo: realizó algunos cambios en el archivo léame utilizando la interfaz gráfica de usuario de github. Y luego trató de empujar su nuevo trabajo a github, mostrará este mensaje que dice que los cambios que realizó en forma remota pero que no está presente localmente.
Deke

13

Si este es tu primer empujón

solo cambia el

git push <repo name> master

¡cámbialo así!

git push -f <repo name> master

1
Esto descarta los archivos creados inicialmente en el origen. En su lugar, use un git pullbefore para obtener archivos remotos y luego combine su commit. Al igual que la respuesta aceptada dice
JayJay

@jayjaybricksoft Gracias por tu comentario. Es el primer impulso, por lo que reemplazar los archivos de origen está bien.
Mahyar


2

Las respuestas proporcionadas no funcionaron para mí.

Tenía un repositorio vacío en GitHub con solo el archivo LICENCIA y un solo compromiso localmente. Lo que funcionó fue:

$ git fetch
$ git merge --allow-unrelated-histories
Merge made by the 'recursive' strategy.
 LICENSE | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 LICENSE

También antes de mergeque desee:

$ git branch --set-upstream-to origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.

0

Seguí estos pasos:

Tire del maestro:

git pull origin master

Esto sincronizará su repositorio local con el repositorio de Github. Agregue su nuevo archivo y luego:

git add .

Cometer los cambios:

git commit -m "adding new file  Xyz"

Finalmente, presione el maestro de origen:

git push origin master

Actualice su repositorio de Github, verá los archivos recién agregados.


0

Si está utilizando Visual S2019, cree una nueva rama local como se muestra a continuación y luego presione los cambios en el repositorio Sucursal local VS2019

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.