¿Cómo aplicar solicitudes de extracción ascendentes no fusionadas de otras bifurcaciones en mi bifurcación?

Resuelto leek asked hace 13 años • 8 respuestas

Un proyecto en GitHub del que tengo una bifurcación tiene nuevas solicitudes de extracción que quiero incluir en mi bifurcación y que el autor aún no ha incluido.

¿Existe una forma sencilla de aplicar solicitudes de extracción de otras bifurcaciones en mi bifurcación? ¿Hay algo más aquí que me falta?

leek avatar May 17 '11 02:05 leek
Aceptado

Actualización: a través de la página web

También puedes hacer esto a través de la página web de github.

Supongo que ya debería tener una bifurcación ( MyFork) del repositorio común ( BaseRepo) que tiene la solicitud de extracción pendiente de una bifurcación ( OtherFork) que le interesa.

  1. Navegue hasta la bifurcación ( OtherFork) que inició la solicitud de extracción que desea incluir en su bifurcación ( MyFork).
  2. Vaya a la página de solicitudes de extracción deOtherFork
  3. Haga clic en nueva solicitud de extracción
  4. Se deben ofrecer las solicitudes de extracción pendientes. Recuerde seleccionar OtherForkla sucursal adecuada también. Seleccione en el lado izquierdo como base su horquilla ( MyFork) ( IMPORTANTE ).
  5. Ahora la opción de View pull requestdebería cambiar a Create pull request. Haga clic en esto.

Ahora deberías tener una solicitud de extracción pendiente en tu bifurcación ( MyFork), que simplemente puedes aceptar.

Hotschke avatar Feb 25 '2015 21:02 Hotschke

Puedes hacerlo manualmente con bastante facilidad:

  • agregue la otra bifurcación como control remoto de su repositorio:

    git remote add otherfork git://github.com/request-author/project.git
    
  • buscar las confirmaciones de su repositorio

    git fetch otherfork
    
  • Luego tiene dos opciones para aplicar la solicitud de extracción (si no desea elegir, elija 1).

    1. Si no le interesa aplicar también las eventuales confirmaciones que se agregaron entre el origen y la solicitud de extracción, puede simplemente cambiar la rama en la que se formó la solicitud de extracción.

      git rebase master otherfork/pullrequest-branch
      
    2. Si solo desea las confirmaciones en la solicitud de extracción, identifique su SHA1 y haga

      git cherry-pick <first-SHA1> <second-SHA1> <etc.>
      
CharlesB avatar May 16 '2011 19:05 CharlesB

Como dijo Tekkub anteriormente, puedes simplemente tirar de la rama directamente. La mayoría de las veces con GitHub, la rama es simplemente "maestra" en la bifurcación del usuario solicitante del proyecto.

Ejemplo:git pull https://github.com/USER/PROJECT/ BRANCH

Y como ejemplo práctico:

Supongamos que bifurcó un proyecto de github llamado safaribooks y existe la siguiente solicitud de extracción, en el proyecto original, que desea colocar en su bifurcación:

ingrese la descripción de la imagen aquí

Luego, en la carpeta del proyecto clonado de tu bifurcación, ejecuta:

git pull https://github.com/fermionic/safaribooks.git fix-str-decode
SciPhi avatar Jul 26 '2012 18:07 SciPhi

Las solicitudes de extracción para el proyecto pueden provenir de muchos autores diferentes (bifurcaciones) y probablemente no desee un control remoto separado para cada bifurcación. Además, no desea hacer ninguna suposición sobre la rama que utilizó el autor al enviar la solicitud de extracción o qué más podría haber en la rama maestra del autor. Por lo tanto, es mejor hacer referencia a la solicitud de extracción tal como aparece en el repositorio ascendente, en lugar de como aparece en las otras bifurcaciones.

Paso 1:

git remote add upstream <url>

Probablemente ya haya realizado este paso, pero si no, querrá definir un control remoto para el proyecto ascendente. La URL es la URL clonada del proyecto que bifurcaste. Más información en Configuración de un control remoto para una bifurcación y Sincronización de una bifurcación . upstreames el nombre que le estás dando al control remoto, y si bien puede ser cualquier cosa, upstreames el nombre convencional.

Paso 2:

git pull upstream refs/pull/{id}/head

... ¿dónde {id}está el número de solicitud de extracción? upstreames el nombre del control remoto desde el que realizar la extracción, es decir, simplemente "upstream" si siguió exactamente el paso 1. También puede ser una URL, en cuyo caso puedes omitir el paso 1.

Paso 3:

Escriba un mensaje de confirmación para la confirmación de fusión. Puedes mantener el valor predeterminado, aunque recomiendo dar un buen resumen de una línea con el número de solicitud de extracción, el problema que soluciona y una breve descripción:

Merge PR#42, fixing VIM-652, support for mapping arbitrary IDEA actions
jbyler avatar Oct 20 '2014 22:10 jbyler

Alguna información más detallada que funcionó para mí.

Mi archivo .git/config para el repositorio bifurcado se ve así:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = false
[remote "origin"]
        url = [email protected]:litzinger/angular-carousel.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
        rebase = true
[remote "source"]
        url = git://github.com/revolunet/angular-carousel.git
        fetch = +refs/heads/*:refs/remotes/source/*
        fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

Luego ejecute "git fetch source", que luego enumera todas las solicitudes de extracción del repositorio bifurcado.

 * [new ref]         refs/pull/54/head -> origin/pr/54
 * [new ref]         refs/pull/67/head -> origin/pr/67
 * [new ref]         refs/pull/69/head -> origin/pr/69
 * [new ref]         refs/pull/71/head -> origin/pr/71

Y luego, para fusionar en una solicitud de extracción específica, ejecute "git merge master origin/pr/67"

Brian Litzinger avatar Nov 18 '2013 21:11 Brian Litzinger