Error “Fatal: no es posible avanzar rápidamente, cancelando”

6 minutos de lectura

Avatar de usuario de Jesse Leite
jesse leite

¿Por qué Git ya no me permite fusionar con avance rápido?

Si trato de forzarlo usando --ff-onlyEntiendo el mensaje

fatal: No es posible avanzar rápidamente, anulando.

Me doy cuenta de que hay enormes ventajas para merge --no-ffpero estoy desconcertado por qué no puedo --ff-only ¿ahora?

  • @Cyebukayire: si no sincroniza con frecuencia (git pull), esto será un problema incluso en la hora GPT 6.

    – Sławomir Lenart

    1 de agosto de 2022 a las 20:02

  • I haría como más detalles, como qué rama y qué archivos. Dame una oportunidad de luchar, por favor.

    –Jeff Silverman

    10 de agosto de 2022 a las 22:48

avatar de usuario de crypdick
cripdick

Descargo de responsabilidad: estos comandos traerán cambios de la rama remota a la tuya.

git pull --rebase. A diferencia de la otra solución, no necesita saber el nombre de su sucursal de destino.

Si su rama ascendente no está configurada, intente git pull origin <branch> --rebase (crédito a @Rick en los comentarios)

Para configurar esta opción globalmente, utilice git config --global pull.rebase true (crédito a @Artur Mustafin abajo)

  • Esto funcionó muy bien para mí, excepto que no tenía un conjunto ascendente en mi sucursal, así que tuve que usar git pull origin <branch> --rebase y parecía hacer el truco. ¡Gracias!

    – Rick

    4 mayo 2021 a las 23:28

  • Si obtiene conflictos de fusión en medio de esto, corrija sus archivos de fusión y luego ejecute git rebase --continue.

    – Coreo

    6 sep 2021 a las 7:33

  • Hice git push to remote antes de tirar y recibí el error y esta solución funcionó para mí. ¡gracias!

    – Ansub

    29 de agosto de 2022 a las 16:08

  • Mi compromiso está en conflicto con mi compañero y esto funciona

    – dotrinh PM

    19 de noviembre de 2022 a las 7:10

Avatar de usuario de Dheeraj kumar Rao
Dheeraj kumar Rao

Usa la opción --no-ff para desactivar el avance rápido para un tirón:

git pull --no-ff

https://git-scm.com/docs/git-pull#Documentation/git-pull.txt—no-ff

  • Esta es la respuesta correcta, en caso de que esté tratando específicamente de evitar hacer una reorganización.

    – randallreedjr

    30 de noviembre de 2022 a las 19:12

  • esta respuesta debe estar en la parte superior

    – Abdul Mateen Shaikh

    2 de diciembre de 2022 a las 6:21

  • Vamos a llevar este a la cima

    – Sandeep Vattapparambil

    1 de febrero a las 14:18

Su rama ya no se basa directamente en la rama en la que está tratando de fusionarla; por ejemplo, se agregó otra confirmación a la rama de destino que no está en su rama. Por lo tanto, no puede avanzar rápidamente (porque el avance rápido requiere que su rama contenga completamente la rama de destino).

Puede cambiar la base de su sucursal en la parte superior de la sucursal de destino (git rebase <destination branch>) para volver a trabajar en las confirmaciones de modo que avancen rápidamente, o puede hacer una fusión normal.

  • ¿Cómo es esto posible? Esto no es correcto. Debe ser alguna configuración que ha cambiado.

    – matemáticas

    19 oct 2020 a las 13:25

  • @mathtick este mensaje proviene de su configuración de extracción establecida en ff del comando git config pull.ff only

    – Al Duncanson

    17 de noviembre de 2020 a las 15:02

  • “el avance rápido requiere que su rama contenga completamente la rama de destino” parece al revés. Debería ser “el avance rápido requiere que su rama esté completamente contenida dentro de la rama de destino”

    – huyz

    21 de febrero de 2021 a las 7:39

  • git config –global pull.rebase verdadero

    – Alan Turing

    3 de noviembre de 2021 a las 16:44

  • solo ejecuta esto: git pull origin <branch> --rebase

    – Hekmat

    16 de diciembre de 2021 a las 9:08


Avatar de usuario de Aman Bhardwaj
Aman Bhardwaj

Si

git pull

no funciona y si desea fusionar los cambios actuales y los cambios que provendrían de la extracción de la rama desde el origen, haga esto:

git merge origin/BRANCH_NAME

Después de eso, resuelva los conflictos de fusión, si los hay, y termine el día.

Esto se debe a que ha habilitado la opción de solo avance rápido. La cosa aquí es que su extracción de la rama creará una confirmación de combinación en su git local y la opción de avance rápido no permite crear una confirmación de combinación en el momento de la extracción.

En el caso de un equipo grande, terminará reorganizando y resolviendo conflictos muchas veces y para todos y cada uno de los compromisos provenientes del pull.

Le sugiero que elimine ff = solo línea del archivo de configuración local de git.

$ cd a-my-project-root-dir

$ nano .git/config

[pull]
        ff = only // remove this line
        rebase = false

  • Solo podría suceder si ff = only está habilitado, pero esa no es la causa. Si ocurre el error, es una señal de que algo no estándar le sucedió al maestro, consulte stackoverflow.com/a/28973624/1335793 para conocer una buena manera de determinar qué sucedió. Por ejemplo, tuve este error al tratar de extraer del maestro, y lo que realmente hice fue confirmar algo localmente en el maestro que no existía en el control remoto. En un equipo nunca debemos comprometernos a dominar o presionar para dominar; si hubiera deshabilitado ff, entonces no me habría mostrado mi error.

    – Davos

    10 de mayo de 2021 a las 7:16


  • Después de todas las investigaciones, su respuesta funcionó bastante bien. En el archivo .git/configeliminar ff = onlyy añadir rebase = false.

    – claudio

    16 de diciembre de 2022 a las 17:23


Prueba esto. Funcionará muy bien.

git pull origin --rebase 

Después de obtener el error de avance no rápido, simplemente haga lo siguiente:

git pull --rebase origin <name-of-the-remote-branch>

Esto traerá los cambios remotos a su sucursal local. Además de eso, aplicará sus compromisos locales.

Entonces

git push origin <name-of-the-remote-branch>

Esto aplicará sus cambios locales en la copia local de la sucursal remota al repositorio de la sucursal remota real en git

  • Solo podría suceder si ff = only está habilitado, pero esa no es la causa. Si ocurre el error, es una señal de que algo no estándar le sucedió al maestro, consulte stackoverflow.com/a/28973624/1335793 para conocer una buena manera de determinar qué sucedió. Por ejemplo, tuve este error al tratar de extraer del maestro, y lo que realmente hice fue confirmar algo localmente en el maestro que no existía en el control remoto. En un equipo nunca debemos comprometernos a dominar o presionar para dominar; si hubiera deshabilitado ff, entonces no me habría mostrado mi error.

    – Davos

    10 de mayo de 2021 a las 7:16


  • Después de todas las investigaciones, su respuesta funcionó bastante bien. En el archivo .git/configeliminar ff = onlyy añadir rebase = false.

    – claudio

    16 de diciembre de 2022 a las 17:23


Si obtiene esto al hacer un git pull origin master en su sucursal local, abra .gitconfig en el Bloc de notas (generalmente oculto en C:\Users\Myname) y agregue estas dos líneas

[pull]
    ff = no

Guarda la configuración y prueba git pull origin master de nuevo

  • git pull origin master --ff/--no-ff/--ff-only son los respectivos una vez opciones

    – Kontur

    8 de octubre de 2021 a las 8:12

  • Para resolverlo en MacOs, puede editar el config archivo en .git/config.

    – claudio

    9 de enero a las 13:43


¿Ha sido útil esta solución?