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.

nodwj
fuente

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.

palerdot
fuente
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".

Kartikey Kumar Srivastava
fuente
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
Mahyar
fuente
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'.
koral
fuente
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.

Darshan Jain
fuente
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

ptsivakumar
fuente