Tengo un proyecto con múltiples sucursales. Los he estado empujando a GitHub , y ahora que alguien más está trabajando en el proyecto, necesito sacar sus ramas de GitHub. Funciona bien en master. Pero digamos que alguien creó una rama xyz. ¿Cómo puedo extraer una rama xyzde GitHub y fusionarla en una rama xyzen mi localhost?
De hecho, tengo mi respuesta aquí: empujar y tirar ramas en Git
Pero recibo un error "! [Rechazado]" y algo sobre "avance no rápido".
¿Alguna sugerencia?

git fetch origin --force", pero lea la documentación antes de hacerlo.Respuestas:
Eso es porque Git no puede fusionar los cambios de las ramas en su maestro actual. Digamos que ha desprotegido la rama
mastery desea fusionarse en la rama remotaother-branch. Cuando haces esto:Git básicamente está haciendo esto:
Es decir, a
pulles solo unfetchseguido de amerge. Sin embargo, cuando sepullactiva, Git solo se fusionaráother-branchsi puede realizar una combinación de avance rápido . Una fusión de avance rápido es una fusión en la que la cabeza de la rama en la que está intentando fusionarse es un descendiente directo de la cabeza de la rama que desea fusionar. Por ejemplo, si tiene este árbol de historial, la fusiónother-branchdaría como resultado una fusión de avance rápido:Sin embargo, esto no sería una combinación de avance rápido:
Para resolver su problema, primero busque la rama remota:
Luego combínelo en su rama actual (supongo que es así
master), y arregle cualquier conflicto de fusión:fuente
git fetch -fhe solucionado mi problema! ¡Gracias!xzyen la rama localmaster, que no es lo que implicaba la pregunta original; "¿Cómo puedo extraer la rama xyz de GitHub y fusionarla en la rama xyz en mi host local?"Simplemente
git pullhaga un seguimiento explícito de sus ramas remotas y un simple hará lo que quiera:Este último es una operación local.
O incluso más adecuado para la documentación de GitHub sobre bifurcación :
fuente
Puede tirar de una rama a otra con los siguientes comandos.
Cuando estás en la rama maestra, también puedes primero pagar una rama como:
Esto crea una nueva rama, "xyz", desde el maestro y la comprueba directamente.
Entonces haces:
Esto tira de la nueva sucursal a su
xyzsucursal local .fuente
La mejor manera es:
fuente
git fetchtomará la última lista de sucursales.Ahora usted puede
git checkout MyNewBranchHecho :)
Para más información ver documentos: git fetch
fuente
No estoy seguro de entender completamente el problema, pero extraer una rama existente se hace así (al menos funciona para mí :)
Esto supone que su sucursal local se crea fuera del origen / SUCURSAL.
fuente
Esto me ayudó a obtener una rama remota antes de fusionarla en otra:
fuente
En pocas palabras, si desea extraer de GitHub la rama
the_branch_I_want:fuente
Por lo general, si solo ha asignado un repositorio a su código, el gitreponame sería el origen.
Si está trabajando en dos repositorios, como uno es local y otro para remoto, puede consultar la lista de repositorios desde git remote -v . Esto muestra cuántos repositorios se asignan a su código actual.
BranchName debe existir en gitreponame correspondiente.
puede usar los siguientes dos comandos para agregar o eliminar repositorios
fuente
también puedes hacer
arregle los conflictos de fusión si hay alguno
-r es para rebase. Esto te hará ramificar la estructura de
a
Esto conducirá a una historia más limpia. Nota: En caso de que ya haya empujado su otra rama al origen (o cualquier otro control remoto), es posible que tenga que forzar a empujar su rama después del rebase.
fuente
yo hice
En vez de
Según lo sugerido por @innaM. Cuando utilicé la versión ascendente, decía 'fatal: No es un nombre de objeto válido:' upstream / remote_branch_name ''. No lo hice
git fetch origincomo lo sugirió un comentario, sino que simplemente lo reemplacéupstreamconorigin. Supongo que son equivalentes.fuente
para sacar la rama de GitHub puedes usar
Asegúrese de que el nombre de la rama sea exactamente el mismo.
fuente