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.