425 votos

Tire las peticiones de otros tenedores en el tenedor

Tiene un nuevo proyecto en GitHub que tengo un fork de tirar las peticiones que quiero tirar a mi tenedor que el autor no ha sacado en todavía.

¿Hay una forma sencilla de aplicar solicitud de extracción de otros tenedores en mi tenedor? ¿Hay algo aquí que me estoy perdiendo?

260voto

CharlesB Puntos 27070

Usted puede hacerlo de forma manual con bastante facilidad:

  • agregar la otra horquilla como un mando a distancia de su repo:

    git remote add otherfork git://github.com/request-author/project.git
    
  • busca de su repo s se compromete

    git fetch otherfork
    
  • Se tienen entonces dos opciones para aplicar el parche (si usted no quiere elegir 1.)

    1. Si no se preocupan por aplicar también la eventual compromete a los que se han añadido entre el origen y el pull request, usted puede reajuste de la rama en la que la solicitud de extracción se formó

      git rebase master otherfork/pullrequest-branch
      
    2. Si usted sólo desea que la compromete en la solicitud de extracción, identificar sus SHA1 y hacer

      git cherry-pick <first-SHA1> <second-SHA1> <etc.>
      

67voto

SciPhi Puntos 830

Como Tekkub dije anteriormente, sólo consigues la rama directamente. La mayor parte del tiempo con GitHub, la rama es simplemente "maestra" en la horquilla del usuario solicitante del proyecto.

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

19voto

Brian Litzinger Puntos 243

Algunos más detallan información que trabajó 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 = git@github.com: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 ejecutar "git fetch fuente", que luego se enumeran todas las solicitudes de extracción de la repo bifurcada.

 * [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 combinar en una solicitud específica tire ejecutar "git combinar principal origen/pr/67"

19voto

jbyler Puntos 721

Pull requests del proyecto puede venir de diferentes autores (horquillas), y usted probablemente no quiere un remoto independiente para cada bifurcación. También, usted no quiere hacer ninguna suposición acerca de la rama en la que el autor utiliza cuando la presentación de la solicitud de extracción, o qué otra cosa podría ser el autor de la rama principal. Así que es mejor hacer referencia a la solicitud de extracción, tal como aparece en la parte de arriba del repositorio, en lugar de como aparece en los otros tenedores.

Paso 1:

git remote add upstream <url>

Es probable que ya hayas realizado este paso, pero si no, usted querrá un remoto definido para el proyecto aguas arriba. La URL es el clon de la dirección URL del proyecto se bifurca. Más información en la Configuración de un mando a distancia para un tenedor y Sincronización de un tenedor. upstream es el nombre que da a la remota, y aunque puede ser cualquier cosa, upstream es el nombre convencional.

Paso 2:

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

... donde {id} es la atracción número de solicitud. upstream es el nombre del mando a distancia para tirar, es decir, sólo "aguas arriba" si has seguido el paso 1 exactamente. También puede ser una dirección URL, en cuyo caso se puede omitir el paso 1.

Paso 3:

Escriba un mensaje de confirmación para la combinación de comprometerse. Usted puede mantener la opción por defecto, aunque yo recomiendo dar un agradable un resumen de una línea con el tirón número de solicitud, el problema se corrige, y una breve descripción:

Merge PR#42, fixing VIM-652, support for mapping arbitrary IDEA actions

9voto

MindTooth Puntos 1287

Lo que hago es la siguiente;

git checkout master
git remote add #NAME# #ADDRESS TO REPO#
git fetch #USERNAME#
git checkout -b test_fork
git rebase #NAME#/#BRANCH#

Ahora he se fusionaron los cambios en un rama de prueba, llamado test_fork . Para que los cambios no ensuciar mi árbol.

Opcionalmente puede utilizar escoger como se describió anteriormente para buscar un compromiso particular si es más preferible.

Viaja feliz :)

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X