Tengo un proyecto alojado en GitHub que alguien ha bifurcado. En su bifurcación, crearon una nueva rama "foo" e hicieron algunos cambios. ¿Cómo llevo a su "foo" a una nueva sucursal también llamada "foo" en mi repositorio?
Entiendo que me pueden enviar una solicitud de extracción, pero me gustaría iniciar este proceso yo mismo.
Suponga lo siguiente:
- Debido a que bifurcaron mi proyecto, nuestros repositorios comparten la misma 'historia'
- Aunque GitHub muestra que su proyecto fue bifurcado del mío, mi repositorio local no tiene ninguna referencia al proyecto de esta persona. ¿Necesito agregar el suyo como control remoto?
- Todavía no tengo una rama llamada "foo". No sé si primero necesito crear esto manualmente.
- Definitivamente quiero que esto se arrastre a una rama separada y no a mi maestro.
fuente
git://
URL de la página del repositorio GitHub de la otra persona en lugar de//path/to/coworkers/repo.git
. (Describiendo que eso fue lo que hizo que mi respuesta fuera demasiado lenta;))No, no necesita agregarlos como control remoto. Eso sería engorroso y difícil de hacer cada vez.
Agarrando sus compromisos:
Esto crea una rama local llamada
ournameforbranch
que es exactamente igual a lo quetheirbranch
era para ellos. Para el ejemplo de la pregunta, el último argumento seríafoo:foo
.La
:ournameforbranch
parte de la nota puede dejarse de lado si es molesto pensar en un nombre que no entre en conflicto con una de sus propias ramas. En ese caso, una referencia llamadaFETCH_HEAD
está disponible. Puedesgit log FETCH_HEAD
ver sus commits y luego hacer cosas comocherry-picked
elegir sus commits.Empujándolo de nuevo a ellos:
A menudo, quieres arreglar algo de ellos y empujarlo de vuelta. Eso también es posible:
Si trabajar en estado separado te preocupa, crea una rama usando
:ournameforbranch
y reemplazaFETCH_HEAD
y másHEAD
arriba conournameforbranch
.fuente
master
rama predeterminada )git branch -m newbranch
mientras está en este estado separado, git perderá la cabeza y comenzará a decir que su repositorio ya no es válido.git init
parece arreglarlo y volverlo a poner más o menos en el estado en que estaba antes, con la rama llamada "newbranch".Si la respuesta de antak:
te dio:
Luego (siguiendo los consejos de Przemek D) use
fuente
La siguiente es una buena solución conveniente que funciona con GitHub para verificar la rama PR desde la bifurcación de otro usuario. Debe conocer el ID de la solicitud de extracción (que muestra GitHub junto con el título de relaciones públicas).
Ejemplo:
La fijación de su código inseguro # 8
Alice quiere fusionar 1 cometen en
your_repo:master
deher_repo:branch
Sustituya su control remoto si es diferente de
origin
.Sustituya
8
con la ID de solicitud de extracción correcta.fuente
GitHub tiene una nueva opción en relación con las respuestas anteriores, solo copie / pegue las líneas de comando desde el PR:
Merge
oSquash and merge
view command line instructions
fuente
Si el repositorio bifurcado está protegido, por lo que no puede empujarlo directamente, y su objetivo es hacer cambios en su foo, entonces debe hacer que su sucursal foo entre en su repositorio de la siguiente manera:
Ahora tiene una copia local de foo sin upstream asociado. Puede confirmar los cambios (o no) y luego empujar a su foo a su propio repositorio remoto.
Ahora foo está en tu repositorio en GitHub y tu foo local lo está rastreando. Si continúan haciendo cambios en foo, puedes buscar los suyos y unirte a tu foo.
fuente