Problema empujando nuevo código en Github

147

Creé un nuevo repositorio en Github que ahora solo tiene el archivo Readme.md.

Tengo un proyecto RoR recién creado que quería enviar a este repositorio. Los siguientes son los comandos que di en mi Terminal para ejecutar esto junto con el error que recibo.

git remote add origin https://github.com/aniruddhabarapatre/learn-rails.git

Después de lo cual ingresé mi nombre de usuario y contraseña

git push -u origin master

Error ---

To https://github.com/aniruddhabarapatre/learn-rails.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/aniruddhabarapatre/learn-rails.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 merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Esta es la primera vez que empujo mi código a un repositorio de Github y estoy perdido con los errores. Busqué algunas otras preguntas que se hacen aquí, pero ninguna de ellas tuvo problemas la primera vez.

Aniruddha
fuente

Respuestas:

167

Cuando creó su repositorio en GitHub , creó un archivo README.md , que es una nueva confirmación .

Su repositorio local aún no conoce esta confirmación. Por lo tanto:

Se rechazaron las actualizaciones porque el control remoto contiene trabajo que no tiene localmente.

Es posible que desee encontrar para seguir este consejo:

Es posible que desee fusionar primero los cambios remotos (por ejemplo, ' git pull') antes de presionar nuevamente.

Es decir:

git pull
# Fix any merge conflicts, if you have a `README.md` locally
git push -u origin master
Johnsyweb
fuente
3
Lo que estoy haciendo es git pull origin master primero y luego presionar nuevamente.
Bagusflyer
12
en algunos casos, puede obtener un fatal: refusing to merge unrelated historiesen tal caso, enviar git pull --allow-unrelated-histories origin mastery luego presionar según la respuesta anterior
TheLebDev
1
No funciona para mi control remoto: empuje rechazado. remote: remote: refs / heads / master: ...: nombre del confirmador esperado xxx pero encontrado aaa. Hago una configuración de git --global user.email yyy y todavía no reconoce. ¡No puedo forzar nada!
Baruch Atta el
284

Si este es tu primer empujón

solo cambia el

git push **-u** origin master

¡cámbialo así!

git push -f origin master
Van Mart
fuente
55
Esto eliminó mi archivo readme que puse en github primero. Ahora parece que tengo que volver a hacerlo.
Jack en blanco el
3
simplemente puede agregar una advertencia que -f fuerza el empuje y podría
interferir
Esta es una mala manera, me causó un problema, eliminó el archivo Léame, que no fue creado por mí, ahora tengo que llamar al encargado para decirle que soy estúpido, lo siento, crea el archivo Léame nuevamente. :(
Mohammad Elsayed
62

⚡️ FÁCIL: todo lo que necesitas es un empuje forzado. Porque es posible que hayas creado un readme.mdarchivo en Github y aún no lo hayas extraído.

git push -f origin master

Y aquí hay un GIF.

git push -f maestro de origen

⚠️ CUIDADO : El uso forcepuede cambiar el historial de otras personas en el mismo proyecto. Básicamente, si no le importa que un archivo se elimine para todos, simplemente continúe. Especialmente si eres el único desarrollador en el proyecto.

Ahmad Awais
fuente
1
Tenga en cuenta que este enfoque cambia el historial que otros usuarios de este repositorio ya han obtenido. git push -f origin masterNo es un gran hábito formarse.
Johnsyweb
1
¡Esta solución puede resolver empujar confirmación pero también elimina todas las confirmaciones pasadas!
twenk11k
2
Tenga cuidado con los noobs de Github ... Si ha creado un Readme.md a través de GitHub, este comando lo ELIMINARÁ a medida que empuja sus nuevos cambios.
daCoda
Eso es principalmente por qué la gente aterriza aquí. -fLa etiqueta elimina archivos y debe usarse con cuidado.
Ahmad Awais
34

Emita un empuje forzado con el comando:

git push -f origin master
Samarth Shah
fuente
10
Tenga en cuenta que esto puede eliminar las confirmaciones pasadas, lo que puede o no ser deseable
Crashalot
8

Suponiendo que agregó el archivo Readme.md a través de la interfaz proporcionada por github, el archivo readme aún no está en su carpeta local. Por lo tanto, cuando intenta pasar al repositorio remoto, obtiene un error, porque su repositorio local carece del archivo léame, por así decirlo, está "retrasado". Por lo tanto, como se sugiere en el mensaje de error, intente primero "git pull". Esto extraerá el archivo Léame del repositorio remoto y lo combinará con su directorio local. Después de eso, no debería tener problemas para pasar al repositorio remoto (los comandos que publicó me parecen válidos).

Quercus
fuente
6

Esto sucede cuando intenta presionar inicialmente. Debido a que en su repositorio de GitHub tiene readMe.md o cualquier otra cosa nueva que no esté en su repositorio local. Primero debe fusionar el historial no relacionado de su repositorio de github.

git pull origin master --allow-unrelated-histories

entonces puede obtener los otros archivos del repositorio (readMe.md o cualquiera) usando esto

git pull origin master

Después de esto

git push -u origin master

Ahora empujas con éxito todos tus cambios en el repositorio de Github. No soy experto en git, pero cada vez que estos pasos funcionan para mí.

Chathuranga
fuente
5

Teniendo en cuenta que si no ha comprometido sus cambios en un tiempo, quizás hacer esto funcionará para usted.

git add files
git commit -m "Your Commit"
git push -u origin master

Eso funcionó para mí, espero que también lo haga para usted.

Rob Mcelvenny
fuente
3

si usa el git para mac en la GUI, puede elegir Respository-> Pull o "comm + shift + p" para "git pull" primero, luego publique la fuente.

zheng fuchao
fuente
3

Este error ocurre cuando empuja los datos desde su directorio local a su repositorio git remoto siguiendo el comando git: git push -u origin master

Como directorio local y archivos de directorio remoto de git en conflicto.

Solución:

Después de comprometer todos los archivos a la preparación, siga los pasos a continuación.

  1. Recupere los archivos del repositorio remoto ya que está en conflicto con el directorio de trabajo local.

    • git pull <remoter-url> <branch-name>
  2. Cometer los cambios nuevamente.

    • git add -A
    • git commit -m ‘<comment>'
  3. Después de confirmar la fusión de archivos con ambos directorios, puede usar

    • git push -u origin master

Esto solucionará el problema. Gracias.

Ravi
fuente
1

Tuve un problema similar ... Lo resolví así (no soy un experto en git, así que no sé si es una solución correcta, pero funcionó para mí):

git pull origin master --allow-unrelated-histories
git merge origin origin/master
git rm README.md
git commit -m 'removed readme.md'
git push origin master
Marco Caggiano
fuente
0

¡Luché con este error durante más de una hora! A continuación se muestra lo que me ayudó a resolverlo. Todo esto mientras mi directorio de trabajo era el repositorio que había clonado en mi sistema.

Si está agregando archivos a su repositorio existente ** 1. Extraje todo lo que había agregado a mi repositorio a mi carpeta GitHub:

git pull


La salida era algún archivo léame archivo1 archivo2

  1. Copié (arrastre y suelte) mis nuevos archivos (los archivos que quería insertar) en mi repositorio clonado (repositorio de GitHub). Cuando vaya a este repositorio, debería ver sus archivos antiguos y nuevos.

p.ej. algunos archivos léame archivo1 archivo2 archivo nuevo1 archivo nuevo2

  1. git agregar "archivo nuevo1" "archivo nuevo2"

  2. estado de git [opcional] esto le asegurará si los archivos que desea agregar están organizados correctamente o no se emitieron


En la sucursal maestra Su sucursal está actualizada con 'origin / master'. Cambios a realizar: (use "git reset HEAD ..." para quitar el escenario)

    new file:   newfile1
    new file:   newfile2

5.git commit -m "cualquier descripción que quieras dar" 6.git push

Y todos mis archivos nuevos junto con los anteriores se vieron en mi repositorio.

Potatojaisiladki
fuente
0

Una respuesta más simple es cargar manualmente el archivo README.MD desde su computadora a GitHub. Me funcionó muy bien.

Bogdan Doicin
fuente
0

Uso las opciones de Ramas, y luego hago clic derecho en la carpeta "remoto / origen" y luego hago clic en "eliminar ramas del control remoto", mira la imagen a continuación:

la imagen

Kevin Anderson Gomes Cabral
fuente
0

Recibí este error en Azure Git, y esto resuelve el problema:

git fetch
git pull
git push --no-verify
canmustu
fuente