Réponses:
Depuis le 15.08.2016, GitHub permet de changer la branche cible d'une pull request via l'interface graphique. Cliquez sur à Edit
côté du titre, puis sélectionnez la branche dans la liste déroulante.
Vous pouvez maintenant modifier la branche de base d'une demande d'extraction ouverte. Après avoir créé une demande d'extraction, vous pouvez modifier la branche de base afin que les modifications de la demande d'extraction soient comparées à une branche différente. En changeant la branche de base de votre pull request d'origine plutôt qu'en en ouvrant une nouvelle avec la branche de base correcte, vous pourrez conserver un travail et des discussions précieux.
L'émetteur peut changer cela lorsqu'il émet la demande d'extraction, mais une fois qu'il l'a émise, vous ne pouvez pas le changer.
D'un autre côté, vous pouvez fusionner manuellement leur branche et pousser, ce que je fais semi-régulièrement pour les demandes d'extraction mal ciblées.
Vous pouvez trouver la hub
gemme utile pour travailler avec les composants de la demande d'extraction.
Ce joyau termine le processus manuel, qui est:
git checkout ${target_branch} && git merge ${remote}/${branch}
git push origin ...
git merge --no-ff ...
comme @GuillermoMansilla mentionne dans sa réponse.
Une alternative à l'utilisation du gem hub mentionné par d'autres réponses consiste à utiliser la ligne de commande pour fusionner localement les pull requests , ce qui vous permet de faire:
$ git fetch origin
$ git checkout *target_branch*
$ git merge pr/XXX
$ git push origin *target_branch*
Les commandes ci-dessus ne fonctionnent directement que si vous ajoutez d'abord la ligne suivante à votre .git/config
fichier:
fetch = +refs/pull/*/head:refs/remotes/symbolic_name_origin_or_upstream/pr/*
Cela vous permet de télécharger TOUTES les demandes d'extraction. Étant donné que cela n'est peut-être pas souhaité pour les dépôts volumineux, GitHub a modifié les instructions pour inclure la git fetch origin pull/ID/head:BRANCHNAME
syntaxe, ce qui évite la modification du fichier de configuration et ne télécharge que cette seule demande d'extraction.
Bien que vous ne puissiez pas modifier la pull request existante car elle n'est pas la vôtre, vous pouvez facilement en créer une nouvelle si le référentiel source associé existe toujours - oui, même s'il appartient à quelqu'un d'autre.
Accédez au référentiel de l'émetteur puis créez une nouvelle pull request dans son référentiel en utilisant les mêmes validations mais assurez-vous de définir correctement la bonne branche cible.
Revenez ensuite à votre propre référentiel et acceptez la nouvelle demande d'extraction. Voila!
Il n'y a rien de mal avec la solution de Daniel Pittman, mais je traiterais ces fusions comme "pas d'avance rapide", c'est-à-dire en changeant l'étape 3 pour:
git checkout ${target_branch} && git merge --no-ff ${remote}/${branch}
En utilisant --no-ff
, l'historique sera plus facile à lire. Cela indiquera clairement que les $n
commits proviennent de $branch
, et cela vous facilitera également la vie si vous devez annuler quelque chose qui a été fait dans cette branche.
Pour répondre également à la question d'eoinoc et donner un conseil supplémentaire:
Après avoir effectué la fusion, votre git cli vous invitera à écrire un message, généralement un message générique apparaîtra disant quelque chose comme
Fusionner la branche de suivi à distance `` utilisateur / leur-branche '' dans votre branche
Assurez-vous de modifier ce message et d'inclure une référence au numéro de demande d'extraction. Autrement dit: (en supposant que le numéro de demande d'extraction est 123)
Fusionner la branche de suivi à distance `` utilisateur / leur-branche '' dans votre branche
refs # 123 résoudre quoi que ce soit ...
Ainsi, la prochaine fois que vous visiterez votre page de problèmes / demandes d'extraction github et que vous vérifierez cette demande d'extraction particulière, vous verrez votre message avec un lien pour valider l'endroit où vous avez effectué la fusion.
Voici une capture d'écran de ce que je veux dire.
Pour ce faire, allez sur la page d'accueil de votre référentiel, cliquez sur les branches, et changez la branche par défaut de master en autre chose, dans mon cas "dev".
Après cela, chaque fois que quelqu'un crée une pull request, le merge
bouton fusionnera automatiquement la requête dans "dev" plutôt que master.