Las actualizaciones fueron rechazadas porque la punta de su sucursal actual está detrás de su contraparte remota

8 minutos de lectura

Las actualizaciones fueron rechazadas porque la punta de su sucursal
mike christensen

Nuestro flujo de trabajo es tal. Tenemos una sucursal llamada dev que puedo alcanzar en origin/dev. Cuando hacemos cambios, creamos una rama de desarrollo:

git checkout -b FixForBug origin/dev

Ahora tengo una sucursal llamada FixForBug que es rastrear (creo que esa es la palabra correcta) origin/dev. Por lo tanto, si hago un git pull traerá nuevos cambios de origin/dev Lo cual es genial. Ahora, cuando termino con mi arreglo, empujo a una rama remota llamada de la misma manera.

Primero bajo cualquier cambio de origin/dev y hacer una rebase:

git pull --rebase

Luego empujo los cambios a una rama remota del mismo nombre:

git push origin FixForBug

Ahora, hay una rama en el servidor remoto y puedo crear una solicitud de extracción para que ese cambio se apruebe y se fusione nuevamente con la rama de desarrollo. Yo no siempre empuja cualquier cosa para origin/dev yo mismo. Supongo que esto es un flujo de trabajo bastante común.

La primera vez que hago un git push, funciona bien y crea la rama remota. Sin embargo, si presiono un segundo tiempo (digamos durante la revisión del código, alguien señala un problema), aparece el siguiente error:

error: no se pudieron enviar algunas referencias a ‘https://github.mydomain.info/Product/product.git’
sugerencia: las actualizaciones fueron rechazadas porque la punta de su rama actual está detrás de su contraparte remota. Integre los cambios remotos (por ejemplo, sugerencia: ‘git pull …’) antes de presionar nuevamente.
Consulte la ‘Nota sobre los avances rápidos’ en ‘git push –help’ para obtener más detalles.

Sin embargo, si hago un git status dice que estoy por delante de origin/dev por 1 compromiso (que tiene sentido) y si sigo la sugerencia y ejecuto git pull, dice que todo está actualizado. I pensar esto se debe a que estoy empujando a una rama diferente a mi rama ascendente. Puedo solucionar este problema ejecutando:

git push -f origin FixForBug

En ese caso, enviará los cambios a la rama remota, diciendo (actualización forzada) y todo aparece ser bueno en la sucursal remota.

Mis preguntas:

Por que es -f necesario en este escenario? Por lo general, cuando estás forzando algo, es porque estabas haciendo algo mal o al menos en contra de la práctica estándar. ¿Estoy bien haciendo esto, o estropeará algo en la rama remota o creará una molestia para quien tenga que fusionar mis cosas en el desarrollo?

  • Parece que el mensaje que está recibiendo dice que la sucursal remota FixForBug está por delante de su sucursal local FixForBug. Debe extraer los cambios de esa rama remota y fusionarlos en su rama local antes de presionar.

    – mhatch

    08/09/2016 a las 20:52

  • @mhatch – Así que básicamente corre git pull origin FixForBug antes de empujar a eso? Vale, eso tiene sentido. ¡Siéntase libre de agregar como respuesta!

    –Mike Christensen

    08/09/2016 a las 21:08

  • por presionar herku si obtiene este error, haga esto. stackoverflow.com/a/21088381/12201407

    – jeevu94

    15 dic 2020 a las 11:00

  • La pregunta más copiada de Stack Overflow con texto sin formato

    -Peter Mortensen

    21 de abril de 2021 a las 16:55

  • @PeterMortensen Jaja, ¡claramente debería ganar algún tipo de premio!

    –Mike Christensen

    21 de abril de 2021 a las 22:32

Las actualizaciones fueron rechazadas porque la punta de su sucursal
keif kraken

los -f es realmente requerido debido a la rebase. Cada vez que realice una reorganización, deberá forzar un empujón porque la rama remota no se puede avanzar rápidamente a su compromiso. lo harías siempre quiere asegurarse de hacer un pull antes de empujar, pero si no le gusta forzar el push a maestro o desarrollador, puede crear una nueva rama para empujar y luego fusionar o hacer un PR.

  • ¿Podría aclarar el punto “Siempre querrá asegurarse de hacer un tirón antes de empujar”? Está claro por qué se requiere “push -f” después de la reorganización de la rama local. En este caso, ¿no se deshace el rebase del local haciendo un tirón con el mando antes de pulsar?

    – Hari

    17 de abril de 2020 a las 7:57

  • Estaba pensando en lo mismo, si extraigo los archivos que rebase, entonces estaría haciendo una rebase por nada. Aún así, gracias por el empujón de la fuerza, estaba teniendo problemas para resolver esto.

    – claudiofc

    12 dic 2020 a las 21:41

  • Gracias. Me gusta que hayas explicado por qué tenemos que -f (forzar). Tiene sentido ahora.

    – Ninguno

    30 de enero de 2021 a las 0:44

  • Esto me ahorró mucho tiempo. Esto no se menciona en ninguno de los blogs/tutoriales que explican git rebase. ¡Gracias una tonelada!

    – Srini Karthikeyan

    5 de julio de 2021 a las 14:44

  • Esto me ahorró mucho tiempo. Gracias

    – Juan Cris Mañabo

    16 oct 2021 a las 12:41

Las actualizaciones fueron rechazadas porque la punta de su sucursal
Talha Rafique

*"The tip of your current branch is behind its remote counterpart"* significa que ha habido cambios en la sucursal remota que no tiene localmente. Y Git te dice que importes nuevos cambios desde REMOTE y combínalo con tu código y luego push a distancia.

Puede usar este comando para forzar cambios en el servidor con el repositorio local (). El código de repositorio remoto se reemplazará con su código de repositorio local.

git push -f origin master

Con el -f etiqueta anulará la código de sucursal remota con su código de repositorio local.

  • Es mejor habilitar Force Push en caso de que su sucursal esté protegida

    – Waleed93

    28 de abril de 2021 a las 10:52

  • esto realmente funcionó para mí después de unos minutos de frustración

    – Dra. Mukama

    2 de noviembre de 2021 a las 20:51

  • Lo intenté git push -f pero dice Todo está actualizado. alguna otra idea?

    – arielma

    14 de noviembre de 2021 a las 7:02


  • usé ‘git push -f origin main’ y funcionó

    – Njuguna_nc

    17 de noviembre de 2021 a las 13:43

  • si. lo tienes. @Yashank

    – Talha Rafique

    14 de diciembre de 2021 a las 10:12

Para asegurarse de que su sucursal local FixForBug no esté por delante de la sucursal remota FixForBug, extraiga y combine los cambios antes de empujarlos.

git pull origin FixForBug
git push origin FixForBug

  • OP declaró que ya hicieron un tirón de git e intentaron empujar. Su respuesta no se aplica a la pregunta de OP.

    – Patricio

    2 de diciembre de 2019 a las 2:38

  • Siempre es mejor evitar un empujón forzado. ¡Gracias por compartir esto!

    – Ann Kilzer

    12 de diciembre de 2019 a las 8:32

  • ¡Esto funciona para mí! Gracias

    – Ji Hyun

    12 de noviembre de 2021 a las 13:46

  • Esto funciona como una mantequilla suave… ¡Gracias hombre!

    – Anggi Permana Harianja

    27 de enero a las 7:51

1646969050 597 Las actualizaciones fueron rechazadas porque la punta de su sucursal
Golam sorwar

Establecer el nombre de la rama actual, como Maestro:

git pull --rebase origin master
git push origin master

O el nombre de la sucursal desarrollar

git pull --rebase origin develop
git push origin develop

Si quieres evitar tener que usar -fentonces puedes usar solo

git pull

en lugar de

git pull --rebase

El no rebase obtendrá los cambios de origin/dev y unir ellos en su FixForBug rama. Entonces, podrás ejecutar

git push origin FixForBug

sin uso -f.

  • Rebase es parte de nuestro flujo de trabajo aquí. Me gritarán si no lo hago.

    –Mike Christensen

    9 de septiembre de 2016 a las 6:03

  • @MikeChristensen: De acuerdo, entonces siga el procedimiento documentado, por supuesto. Por lo que describes, necesitarás usar -f porque tú eres reemplazando commit(s) en el repositorio ascendente con otros diferentes que tienen un historial diferente (reorganizado). Si tuviera que utilizar un producto como Gerrit entonces admite este tipo de flujo de trabajo de revisión de código de rebase sin tener que usar -f al empujar Usamos a Gerrit en el trabajo de esta manera y funciona muy bien.

    – Greg Hewgill

    9 de septiembre de 2016 a las 6:35


1646969051 103 Las actualizaciones fueron rechazadas porque la punta de su sucursal
Pedro Mortensen

Podemos forzar cambios a GitHub usando nuestro repositorio local con el siguiente cmd:

git push -f origin main

  • Rebase es parte de nuestro flujo de trabajo aquí. Me gritarán si no lo hago.

    –Mike Christensen

    9 de septiembre de 2016 a las 6:03

  • @MikeChristensen: De acuerdo, entonces siga el procedimiento documentado, por supuesto. Por lo que describes, necesitarás usar -f porque tú eres reemplazando commit(s) en el repositorio ascendente con otros diferentes que tienen un historial diferente (reorganizado). Si tuviera que utilizar un producto como Gerrit entonces admite este tipo de flujo de trabajo de revisión de código de rebase sin tener que usar -f al empujar Usamos a Gerrit en el trabajo de esta manera y funciona muy bien.

    – Greg Hewgill

    9 de septiembre de 2016 a las 6:35


1646969051 103 Las actualizaciones fueron rechazadas porque la punta de su sucursal
Pedro Mortensen

El comando que usé con Azure DevOps cuando encontré el mensaje “se rechazaron las actualizaciones porque la punta de su rama actual está retrasada” fue/es este comando:

git pull origin master

(o puede comenzar con una nueva carpeta y hacer una clon)…

Esta respuesta no aborda la pregunta planteada, específicamente, Keif ha respondido esto, pero responde el título/texto del encabezado de la pregunta y esta será una pregunta común para los usuarios de Azure DevOps.

Noté el comentario: “Siempre querrás asegurarte de hacer un tirón antes de empujar” en la respuesta de Keif.

yo también he usado interfaz gráfica de usuario Git además de la herramienta de línea de comandos de Git.

(No estaba seguro de cómo hacer el equivalente del comando de la línea de comando “git pull origin master” dentro de la GUI de Git, así que volví a la línea de comando para hacer esto).

Este es un diagrama que muestra los diversos comandos de Git para diversas acciones que podría querer realizar:

Ingrese la descripción de la imagen aquí

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad