Digamos que alguien creó una rama xyz. ¿Cómo tiro de la rama? xyz desde el servidor remoto (por ejemplo GitHub) y fusionarlo en una rama existente xyz en mi repositorio local?
la respuesta a Envía ramas a Git me da el error “! [rejected]” y menciona “no avance rápido”.
¿Cuál es el comando real que estás ejecutando?
– Álex n.
10 de noviembre de 2009 a las 16:20
Es la recuperación la que puede fallar con el mensaje ‘no avance rápido’. ¿Modificó la rama de seguimiento remoto (origen/xyz), o la rama se rebobinó/reescribió en el repositorio remoto? Es posible que deba usar “git fetch origin --force“, pero lea la documentación antes de hacerlo.
– Jakub Narębski
10 de noviembre de 2009 a las 18:46
El control remoto podría ser, por ejemplo, una URL de github, con una rama seleccionada … (ver comentario a la respuesta de Cabri)
– Felipe Oakley
12 de febrero a las 16:09
Pero me sale un error “! [rejected]y algo sobre “avance no rápido”
Eso es porque Git no puede fusionar los cambios de las ramas en su maestro actual. Digamos que has revisado la sucursal mastery desea fusionarse en la rama remota other-branch. Cuando haces esto:
Eso es un pull es solo un fetch seguido de un merge. Sin embargo cuando pull-ing, Git lo hará solamente unir other-branchsi puede realizar un avance rápido unir. A avance rápido merge es una combinación en la que el encabezado de la rama en la que está tratando de fusionarse es un descendiente directo de la cabecera de la sucursal que desea fusionar. Por ejemplo, si tiene este árbol histórico, fusionar other-branch daría como resultado una fusión de avance rápido:
O-O-O-O-O-O
^ ^
master other-branch
Sin embargo, esto sería no ser una fusión de avance rápido:
v master
O-O-O
\
\-O-O-O-O
^ other-branch
Para resolver su problema, primero buscar la rama remota:
$ git fetch origin other-branch
Luego combínalo con tu rama actual (supongo que eso es master), y solucione cualquier conflicto de fusión:
$ git merge origin/other-branch
# Fix merge conflicts, if they occur
# Add merge conflict fixes
$ git commit # And commit the merge!
No, el problema es con la obtención, no con el paso de combinación.
– Jakub Narębski
10 de noviembre de 2009 a las 22:02
Normalmente, los controles remotos se configuran de tal manera que se fuerzan las recuperaciones, incluso si no dan como resultado una confirmación de avance rápido, por lo que no debería ocurrir en la recuperación a menos que el OP haya cambiado algo con la configuración habitual. El problema de avance rápido puede ocurrir durante la recuperación o unir. ¿Qué te hace decir que el problema está definitivamente en la búsqueda y no en la fusión?
– mipadi
10 de noviembre de 2009 a las 23:31
Sigo estos pasos (buscar, fusionar). Git me dice que no hay nada que hacer. Cuando trato de comprometerme, se cae gimiendo sobre los avances rápidos.
– Jean Jordan
8 de noviembre de 2011 a las 17:08
@mipadi Tuve el mismo problema que Jean y, aunque no puedo decir que el control remoto esté configurado de la manera no predeterminada que mencionaste, puedo decir usando git fetch -f han solucionado mi problema! ¡Gracias!
– Cregox
28 de febrero de 2012 a las 13:50
Esto fusiona la rama remota xzy en sucursal local master, que no es lo que implicaba la pregunta original; “¿Cómo puedo extraer la rama xyz de GitHub y fusionarla con la rama xyz en mi localhost?”
– usuario5359531
10 de marzo de 2017 a las 21:04
innaM
Simplemente realice un seguimiento de sus sucursales remotas de forma explícita y sencilla git pull hará justo lo que quieras:
Si obtiene ‘No es un nombre de objeto válido: ‘origin/remote_branch_name’, haga ‘git fetch origin’ primero.
– Martín Konicek
4 de junio de 2012 a las 9:09
fatal: no se puede forzar la actualización de la rama actual.
-Wolfgang Blessen
25 de enero a las 13:06
Roberto Cabri
Un enfoque seguro es crear primero una rama local (es decir, xyz) y luego llevar la rama remota a sus locales.
# create a local branch
git checkout -b xyz
# make sure you are on the newly created branch
git branch
# finally pull the remote branch to your local branch
git pull origin xyz
Esta es la sintaxis que podría llevar una sucursal remota a una sucursal local.
¡Perfecto! Simplemente no conocía esa sintaxis: git pull {repo} {remotebranchname}:{localbranchname}. Pregunta, si ese tirón no funciona (tal vez alguien actualizó la rama y habría conflictos de fusión), ¿cuáles son mis opciones?
– Costa Michailidis
29 de octubre de 2013 a las 14:18
Estoy rechazando esto porque intenta fusionar la rama remota en su rama actual (por ejemplo, maestro). Esto no es lo que la mayoría de la gente quiere hacer, y no es lo que pidió el OP. La respuesta de @mohit es la opción correcta.
– Phrogz
5 de febrero de 2016 a las 5:01
Phrogz: parece que este comportamiento cambió en versiones recientes de Git. Usé esto antes y funcionó perfectamente bien.
– Pawan
10 de enero de 2017 a las 13:08
¡La respuesta es seriamente engañosa! Apliqué la respuesta sin darme cuenta del comentario de @ Phrogz y ahora sufro el problema que mencionó. ¡O qué rama intenta fusionar debe expresarse explícitamente o la respuesta debe eliminarse!
– buraky
25 de enero de 2021 a las 8:48
@Phrogz,@Letitbe, ¿qué comando probaste? Puedo cambiar la respuesta en consecuencia. Nunca tuve el problema de llevarlo al maestro.
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
¿Cuál es el comando real que estás ejecutando?
– Álex n.
10 de noviembre de 2009 a las 16:20
Es la recuperación la que puede fallar con el mensaje ‘no avance rápido’. ¿Modificó la rama de seguimiento remoto (origen/xyz), o la rama se rebobinó/reescribió en el repositorio remoto? Es posible que deba usar “
git fetch origin --force
“, pero lea la documentación antes de hacerlo.– Jakub Narębski
10 de noviembre de 2009 a las 18:46
El control remoto podría ser, por ejemplo, una URL de github, con una rama seleccionada … (ver comentario a la respuesta de Cabri)
– Felipe Oakley
12 de febrero a las 16:09