Comment puis-je récupérer un dissociées pull request pour une branche je n'ai pas?
J'ai besoin de tirer dans une pull request (qui n'a pas été traité dans le courant principal encore) dans le NServiceBus repo:
https://github.com/johnsimons/NServiceBus/commit/d8524d53094e8181716e771c1023e968132abc15
Il n'est évidemment pas mon repo, mais j'ai besoin de changements qui existent dans ce pull request.
Quelle est la meilleure façon de le faire?
- double possible de Tirez la demande d'autres fourchettes dans ma fourchette
Vous devez vous connecter pour publier un commentaire.
Pour aller chercher un pull dans votre référentiel:
Puis faire ce que vous voulez avec FETCH_HEAD:
fatal: Couldn't find remote ref refs/pull/1041/head
. =/[email protected]:jboss/jboss-common-beans.git
à distanceupstream
, puis faire:git fetch upstream refs/pull/4/head
Ou
Puis-je tirer un qui n'est pas encore fusionné pull request?
git pull
vous garder sur vos actuelles de la direction générale et de la fusion dans la PR des modifications lors degit fetch/checkout
sera tout simplement vous changer pour le PR de la branche.Vous pouvez faire ceci:
1) Ajouter de l'amont à distance:
2) Après cela, vous pouvez extraire n'importe quel pull request à une nouvelle branche par son ID:
Alors vous aurez une branche nommée
NEW_BRANCH_NAME
contenant les PR code.Ajout d'un alias:
Si vous faites cela, comme souvent, comme moi, vous souhaitez peut-être le programme d'installation certains pseudonymes. pour elle.
J'ai ceci dans mon .gitconfig:
Ci-dessus, je peux le faire:
Pour les situations difficiles (surtout si vous n'avez pas un extrait git-pensions), je pense que le plus simple est d'appliquer un patch. Pour cela, il suffit d'ouvrir la pull-request sur github, et ajouter un ".patch" à l'URL, le télécharger et appliquer le patch.
Exemple:
Consultez cet article à partir de GitHub: https://help.github.com/articles/checking-out-pull-requests-locally
github/hub
https://github.com/github/hub est un GitHub CLI helper qui traite de ce sujet et d'autres cas d'utilisation magnifiquement à l'aide des renseignements supplémentaires sur le GitHub de l'API. E. g.:
Résultat:
nous sommes maintenant sur une branche appelée
<USERID>-<BRANCH_NAME>
qui contient le PR.Noter le bon nom de la branche qui a été réglé automatiquement pour nous.
cette branche est définie sur la piste de l'origine de la branche sur la fourche, c'est à dire
.git/config
contient:Donc si d'autres validations sont poussés, nous pouvons
git fetch
directement.Installation
hub
sur Linux est actuellement une douleur si vous n'êtes pas familier avec, mais en vaut la peine. Sur Ubuntu 14.04, le Aller sur les dépôts est trop vieux, donc GVM est la meilleure option:J'ai également demandé GitHub pour nous donner un copier coller triche sur l'INTERFACE web à: https://github.com/isaacs/github/issues/449
refs/heads/ticket/NN
? Je n'ai jamais vu cette magique ref, seulementpull/NN/head
(c'est ce quehub
actuellement m'a donné) &pull/NN/merge
. juste curieux..."<USERID>-<BRANCH_NAME>"
, mais le même nom de la branche comme le PR nom de la branche, w/o nom d'utilisateur.Une fois que vous avez ajouté en amont des pensions comme en amont de la télécommande (comme @elias souligne):
Vous pouvez configurer git fetch pull requests par défaut:
Donc, nous allons le chercher:
Et check it out:
Voici les commandes qui ont travaillé pour moi.
Je vais supposer que l'on a déjà cloné un repo (par exemple pytorch ) pour sa/son système localement. Après que certains bénévole et passionné a contribué un peu de code et a émis une PR pour le dépôt distant, mais il a pas été fusionné dans le maître ou n'importe quelle autre branche encore. Donc,
Nous allons d'abord faire
git remote add
à la github dépôt distant:Puis
cd
dans le référentielpytorch
et puis il suffit de faire:Maintenant, l'attente de la PR a été extraites dans votre local pensions et de la pointe de votre fetch serait en FETCH_HEAD. Si vous souhaitez fusionner ce dans l'attente de PR localement, puis il suffit de faire:
Après cela, si vous n':
Vous devriez être en mesure de voir que le repo est en avance de
n
commits qui ont fait partie de l'attente de PR (c'est à dire qu'il est possible d'émettre plus de 1 s'engager dans un seul PR). Ainsi, le nombre de livraisons dépendent de la commet contenues dans l'attente de PR.ci-dessous pour faire votre "git fetch' de la commande pour extraire tous les pull requests quand la course "git fetch"
ajouter ci-dessous dans ~/.gitconfig
note la référence "réf/pull-demandes/" a la cachette convention de nommage, pour git hub, vous pouvez avoir besoin de différents format
Si vous souhaitez simplement ajouter une dissociées Tirez la Demande de certains autres pensions, à votre propre,
il n'est pas nécessaire pour toutes les complications (comme la plupart du temps dans d'autres réponses).
Au lieu de cela il suffit d'aller dans votre propre repo et tirez dans le commit (de PR la source), à l'aide de ses commettre hachage.
Faisant de cette façon, vous aurez juste un tas de nouveaux fichiers édités, comme si vous aviez modifié vous-même. C'est ensuite à vous de décider si vous voulez commettre ces avec certains tag/étiquette.
Ensuite, si vous voulez pousser toutes les news sur votre propre dépôt GitHub, il suffit de faire comme toujours:
Github a clairement doc pour la fusion de la demande d'extraction dans un local repo:
https://help.github.com/en/articles/checking-out-pull-requests-locally
Il se résume à savoir qu'une pull request sur GitHub est juste une branche dans la base de pensions de titres où le nom de la branche est un numéro de séquence. L'article ci-dessus vous montre comment trouver ce numéro et le git en ligne de commande magique pour le tirer à l'intérieur de votre repo avec tout ce nom de la branche que vous souhaitez.
Je ne pouvais pas trouver de même un moyen simple de fusionner les demande d'extraction dans une fourchette que j'ai créé sur GitHub.