gracias
Estoy trabajando en un equipo con algunos desarrolladores que usan Git en Bitbucket. Todos estamos trabajando en un desarrollador rama, no empujando a maestro hasta un lanzamiento.
Uno de los desarrolladores cometió un código incorrecto que sobrescribió el mío por accidente, y ahora estoy tratando de enviar el código correcto al repositorio. He estado leyendo sobre este error durante unos días y ya no puedo ingresar al repositorio porque recibo el siguiente error:
! [rejected] master -> dev (fetch first)
error: failed to push some refs to 'https://myusername@bitbucket.org/repo_user/repo_name.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 integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
sigo las instrucciones y pull
, pero luego recibo un conflicto de fusión. Después de ingresar un mensaje para el conflicto de fusión, mi código local ahora es el código incorrecto que el otro desarrollador cargó por accidente (como se esperaba del pull
). Así que reemplazo el código incorrecto con la copia de seguridad que copié antes de confirmar, y cuando intento presionar nuevamente, aparece el mismo error.
¿Cómo puedo solucionar este problema?
Estos son los comandos que ejecuto para confirmar:
git pull remotename master:dev
git add --all
git commit -m "some message"
git pull remotename master:dev
git push remotename master:dev
Habría pensado que si mantenía este orden, no recibiría conflictos de fusión. Creo que estaba equivocado.
Busqué durante algunas horas en Google y Stack Overflow, y seguí diferentes instrucciones, pero todavía no puedo hacer un empuje de Git al desarrollador rama.
donal
Puede anular cualquier control que haga Git usando “force push”. Usa este comando en la terminal:
git push -f origin master
Sin embargo, potencialmente ignorará el trabajo existente que está en remoto. Efectivamente, está reescribiendo el historial del control remoto para que sea exactamente como su copia local.
-
El uso de la bandera forzar empuje (-f) es muy peligroso y nunca debe ser parte de su flujo de trabajo regular
– Spaideri
20 de abril de 2017 a las 7:13
-
Votado a la baja porque me falta alguna advertencia en esta respuesta.
– Melebio
19 de abril de 2018 a las 9:43
-
¡Oh! Esto obliga al repositorio a reescribirse a sí mismo.
– Azarsa
7 mayo 2018 a las 11:35
-
@simon esto es peligroso porque ignora el trabajo que está en remoto y fuerza sus cambios en el repositorio. Entonces, si no quiere estropear el trabajo de su equipo, NO fuerce el empuje.
– Gasten
19 de febrero de 2020 a las 13:30
-
Levanta la mano si hiciste esto y te sientes culpable pero lo volverías a hacer.
-Eric
15 de julio de 2020 a las 17:40
Himanshu
Ocurre cuando intentamos ingresar al repositorio remoto pero se ha creado un nuevo archivo en el control remoto que aún no se ha extraído, digamos Readme
. En ese caso como dice el error
git rechaza la actualización
ya que no hemos tomado control remoto actualizado en nuestro entorno local. Así que tira primero desde el control remoto
git pull
Actualizará su repositorio local y agregará un nuevo Readme
archivo. Luego envíe los cambios actualizados al control remoto
git push origin master
-
estaba haciendo
git pull origin develop
en mi sucursal de desarrollo local, pero ahora, solo haciendogit pull
a mi me funciona bien, no se porque.– Marcelo
13 de junio de 2018 a las 15:10
-
porque de forma predeterminada, si su sucursal local está sincronizada con la sucursal remota y está desprotegido en esa sucursal, no necesita especificar una sucursal solo
git pull
es suficiente– Himanshu
13 de junio de 2018 a las 17:26
-
git pull
ayuda– Ahnaaf Al-Rafee
28 de marzo de 2021 a las 16:09
git pull <remote> master:dev
traerá el remote/master
rama y fusionarlo en su local/dev
rama.
git pull <remote> dev
traerá el remote/dev
rama, y fusionarlo en su rama actual.
Creo que dijiste que el compromiso en conflicto está activado. remote/dev
por lo que esa es la rama que probablemente pretendía obtener y fusionar.
En ese caso, en realidad no estabas fusionando el conflicto en tu rama local, lo cual es un poco extraño ya que dijiste que viste el código incorrecto en tu copia de trabajo. Es posible que desee comprobar lo que está pasando en remote/master
.
-
Vaya… Nunca supe eso. Pero tiene mucho sentido ahora. La rama maestra también era incorrecta, por lo que su respuesta aclara toda mi pregunta. Todavía soy un poco nuevo en git. ¡Muchas gracias por decirme la diferencia entre esos dos!
– thanos
23 de junio de 2014 a las 2:49
-
La mejor opción para mí fue
git pull --rebase
.– Derek Foulk
2 de julio de 2015 a las 22:07
-
git pull <remote> master:dev
Qué esdev
aquí ?– Ahnaaf Al-Rafee
28 de marzo de 2021 a las 16:07
Esto suele ocurrir cuando el repositorio contiene algunos elementos que no están allí localmente. Entonces, para impulsar nuestros cambios, en este caso necesitamos integrar los cambios remotos y luego presionar.
Así que crea un pull desde el control remoto
git pull origin master
Luego presione los cambios a ese control remoto
git push origin master
Puedes probar esto: git pull origin master --rebase
-
¡Hola Eduardo! Esto funcionó para mí. Pero, ¿puedes explicar por qué funciona? ¿Qué hace exactamente este comando?
-Akshaya Natarajan
11 de junio de 2020 a las 18:24
-
Después de agregar manualmente el archivo README.md en el sitio GitHub. Tampoco puedo enviar el proyecto desde el dispositivo a Git como normalmente. Tu respuesta me ayudo mucho!!!! Gracias hermano
– Nghien Nghien
14 de febrero de 2022 a las 18:43
Pedro Mortensen
Necesitas ingresar:
git pull
git fetch
git merge
Si usas un git push origin master --force
tendrás un gran problema.
-
¡Hola Eduardo! Esto funcionó para mí. Pero, ¿puedes explicar por qué funciona? ¿Qué hace exactamente este comando?
-Akshaya Natarajan
11 de junio de 2020 a las 18:24
-
Después de agregar manualmente el archivo README.md en el sitio GitHub. Tampoco puedo enviar el proyecto desde el dispositivo a Git como normalmente. Tu respuesta me ayudo mucho!!!! Gracias hermano
– Nghien Nghien
14 de febrero de 2022 a las 18:43
samir pudel
Fuerza para empujar
git push -f origen maestro
-
Esto probablemente debería venir con una advertencia.
– Chris
14 de febrero de 2020 a las 21:32
-
Incluso si esto seguramente funcionaría, ¿te importaría explicarlo? ¿Podría haber algún peligro al hacer esto? En caso afirmativo, explíquelo aún más, como: “Amigos, asegúrese de perder confirmaciones usando esto”
–Nico Haase
5 oct 2020 a las 15:35
este mismo mensaje de error se muestra cuando emite
git push
cuando actualmente está en dir desde otro repositorio … el mensaje de git debe actualizarse para reflejar esto, especialmente porque su tono suena tan autoritario que uno podría estar convencido de lo contrario–Scott Stensland
22 de marzo de 2021 a las 15:53