Un projet sur GitHub dont j'ai un fork a de nouvelles requêtes de pull que je veux insérer dans mon fork que l'auteur n'a pas encore récupéré.
Existe-t-il un moyen simple d'appliquer la demande de tirage d'autres fourches à ma fourche? Y a-t-il autre chose ici qui me manque?
git
github
pull-request
poireau
la source
la source
Réponses:
Vous pouvez le faire manuellement assez facilement:
ajoutez l'autre fork comme télécommande de votre repo:
récupérer les commits de son repo
Vous avez alors deux options pour appliquer la demande de tirage (si vous ne voulez pas choisir le choix 1.)
Si vous ne vous souciez pas d'appliquer également les validations éventuelles qui ont été ajoutées entre l'origine et la demande d'extraction, vous pouvez simplement rebaser la branche sur laquelle la demande d'extraction a été formée.
Si vous ne voulez que les commits dans la demande de tirage, identifiez leur SHA1 et faites
la source
git pull URL branchname
Mise à jour: via une page Web
Vous pouvez également le faire via la page Web github.
Je suppose que vous devriez déjà avoir un fork (
MyFork
) du repo (BaseRepo
) commun qui a la demande de pull en attente d'un fork (OtherFork
) qui vous intéresse.OtherFork
) qui a lancé la demande de tirage que vous souhaitez mettre dans votre fourche (MyFork
)OtherFork
OtherFork
également la branche appropriée . Sélectionnez sur le côté gauche comme fourche de base votre fourche (MyFork
) ( IMPORTANT ).View pull request
devrait devenirCreate pull request
. Cliquez ici.Vous devriez maintenant avoir une demande de pull en attente dans votre fork (
MyFork
), que vous pouvez simplement accepter.la source
OtherFork
, dans la liste déroulante "comparer" de droite. J'ai ensuite sélectionné le côté gauche comme fourche de base comme décrit ci-dessus car j'ai pu créer la demande de traction.Comme Tekkub l'a dit précédemment, vous pouvez simplement tirer la branche directement. La plupart du temps avec GitHub, la branche est simplement "master" sur le fork de l'utilisateur demandeur du projet.
Exemple:
git pull https://github.com/USER/PROJECT/ BRANCH
Et comme exemple pratique:
Supposons que vous ayez créé un projet github appelé safaribooks et qu'il y ait la demande d'extraction suivante, dans le projet d'origine, que vous souhaitez mettre dans votre fork:
Ensuite, dans le dossier de projet cloné de votre fork, exécutez:
la source
git pull https://github.com/{upstream/project} refs/pull/{id}/head
place.Les demandes d'extraction pour le projet peuvent provenir de nombreux auteurs différents (fourches), et vous ne voulez probablement pas de télécommande distincte pour chaque fork. De plus, vous ne voulez pas faire d'hypothèses sur la branche que l'auteur a utilisée lors de la soumission de la demande d'extraction, ni sur quoi d'autre pourrait se trouver dans la branche principale de l'auteur. Il est donc préférable de référencer la demande d'extraction telle qu'elle apparaît dans le référentiel en amont, plutôt que telle qu'elle apparaît dans les autres fourches.
Étape 1:
Vous avez probablement déjà fait cette étape, mais sinon, vous voudrez une télécommande définie pour le projet en amont. L'URL est l'URL clone du projet que vous avez créé. Plus d'informations 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 même si cela peut être n'importe quoi,upstream
c'est le nom conventionnel.Étape 2:
... où se
{id}
trouve le numéro de demande de tirage.upstream
est le nom de la télécommande à extraire, c'est-à-dire juste "en amont" si vous avez suivi exactement l'étape 1. 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, bien que je recommande de donner un joli résumé d'une ligne avec le numéro de demande d'extraction, le problème qu'il résout et une courte description:
la source
git pull upstream refs/pull/{id}/head
pour obtenir les commits dans votre référentiel local, puis les référencer commeFETCH_HEAD
(par exemplegit log ..FETCH_HEAD
pour voir ce qu'ilgit merge FETCH_HEAD
Quelques informations plus détaillées qui ont fonctionné pour moi.
Mon fichier .git / config pour le dépôt fourchu ressemble à ceci:
Exécutez ensuite "git fetch source", qui répertorie ensuite toutes les demandes de tirage du dépôt forké.
Et puis pour fusionner dans une demande de tirage spécifique, exécutez "git merge master origin / pr / 67"
la source
refs/pull/
espace de noms distant en lecture seule spécifique à GitHub .smartgit.branch.otherRefs=notes;pull
à smartgit.properties conformément à syntevo.com/doc/display/SG/System+Properties - vous pouvez également les fusionner à partir de là .Ce que je ferais est le suivant;
J'ai maintenant fusionné les modifications dans une branche de test, nommée
test_fork
. Pour que tout changement ne salisse pas mon arbre.En option, vous pouvez utiliser la sélection de cerises comme décrit ci-dessus pour choisir un commit particulier si cela est plus préférable.
Bon voyage :)
la source
J'utilise un script dandy pratique pour cela. Je lance le script en tapant:
et il obtient toutes les demandes d'extraction de la branche amont.
Pour créer le script, créez un fichier
~/bin/git-prfetch
.Le fichier doit contenir les éléments suivants:
Assurez-vous que votre chemin inclut le script en définissant:
Vous pouvez ajouter ce fichier à
~/.bashrc
pour rendre la modification permanente.Maintenant, assurez-vous d'ajouter la fourche à partir de laquelle vous souhaitez obtenir les demandes d'extraction:
Et alors
la source