Comment appliquer des demandes de tirage en amont non fusionnées provenant d’autres fourches dans ma fourche?

Un projet sur GitHub dont j’ai une fourchette a de nouvelles requêtes de tirage que je veux tirer dans ma fourchette que l’auteur n’a pas encore tirées.

Existe-t-il un moyen simple d’appliquer une demande de traction à partir d’une autre fourche dans ma fourche? Y a-t-il autre chose ici qui me manque?

Vous pouvez le faire manuellement assez facilement:

  • ajoutez l’autre fourchette comme télécommande de votre repo:

    git remote add otherfork git://github.com/request-author/project.git 
  • chercher les commits de son repo

     git fetch otherfork 
  • Vous avez alors deux options pour appliquer la requête d’extraction (si vous ne voulez pas choisir le choix 1.)

    1. Si vous ne vous souciez pas d’appliquer également les éventuels commits qui ont été ajoutés entre la demande d’origine et la requête d’extraction, vous pouvez simplement rebaser la twig sur laquelle la demande d’extraction a été créée.

       git rebase master otherfork/pullrequest-branch 
    2. Si vous ne voulez que les commits dans la demande d’extraction, identifiez leur SHA1 et faites

       git cherry-pick    

Mise à jour: Via la page Web

Vous pouvez également le faire via la page Web github.

Je suppose que vous devriez déjà avoir un fork ( MyFork ) du MyFork commun ( BaseRepo ) qui a la demande de OtherFork attente d’un fork ( OtherFork ) qui vous intéresse.

  1. Naviguez jusqu’à la fourche ( OtherFork ) qui a initié la requête de tirage que vous souhaitez obtenir dans votre fourche ( MyFork )
  2. Aller à la page des demandes de OtherFork de OtherFork
  3. Cliquez sur une nouvelle requête d’extraction
  4. Les demandes de tirage en attente doivent être proposées. N’oubliez pas de sélectionner OtherFork twig OtherFork appropriée. Sélectionnez sur le côté gauche la fourche de base ( MyFork ) ( IMPORTANT ).
  5. Désormais, l’option de View pull request de View pull request doit être modifiée en Create pull request . Cliquez ici

Vous devez maintenant avoir une requête de tirage en attente dans votre fourchette ( MyFork ), que vous pouvez simplement accepter.

Comme Tekkub l’a dit précédemment, vous pouvez simplement insérer la twig directement. La plupart du temps avec GitHub, la twig est simplement “master” sur le fork de l’utilisateur demandeur du projet.

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

Des informations plus détaillées qui ont fonctionné pour moi.

Mon fichier .git / config pour le repo en forme de fourche ressemble à ceci:

 [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/* 

Ensuite, lancez “git fetch source”, qui répertorie ensuite toutes les requêtes d’extraction du référentiel forked.

  * [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 

Et puis pour fusionner dans une requête de tirage spécifique, exécuter “git merge master origine / pr / 67”

Les requêtes d’extraction pour le projet peuvent provenir de nombreux auteurs différents (forks), et vous ne souhaitez probablement pas de télécommande distincte pour chaque fork. En outre, vous ne voulez pas faire d’hypothèses sur la twig utilisée par l’auteur lors de la soumission de la requête d’extraction, ou sur quoi que ce soit d’autre dans la twig principale de l’auteur. Il est donc préférable de faire référence à la demande d’extraction telle qu’elle apparaît dans le référentiel en amont, plutôt que dans les autres forks.

Étape 1:

 git remote add upstream  

Vous avez probablement déjà fait cette étape, mais si ce n’est pas le cas, vous voudrez définir une télécommande pour le projet en amont. L’URL est l’URL du clone du projet que vous avez créé. Plus d’infos sur Configuration d’une télécommande pour un fork et Synchronisation d’un fork . upstream est le nom que vous donnez à la télécommande et, bien que cela puisse être quelque chose, upstream est le nom conventionnel.

Étape 2:

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

… où {id} est le numéro de requête d’extraction. upstream est le nom de la télécommande à extraire, c’est-à-dire juste “en amont” si vous avez suivi l’étape 1 exactement. Il peut également s’agir d’une URL, auquel cas vous pouvez ignorer l’étape 1.

Étape 3:

Tapez un message de validation pour la validation de fusion. Vous pouvez conserver la valeur par défaut, même si je vous recommande de donner un bon résumé d’une ligne avec le numéro de la requête d’extraction, le problème résolu et une brève description:

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

Ce que je ferais, c’est ce qui suit:

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

J’ai maintenant fusionné les modifications dans une twig de test, nommée test_fork . Donc, tout changement ne va pas salir mon arbre.

Vous pouvez éventuellement utiliser cherry-pick comme décrit ci-dessus pour choisir un commit particulier si cela est préférable.

Bon voyage 🙂