Comment puis-je vérifier une demande GitHub pull?

j'aimerais vérifier une requête pull précédemment créée (créée via l'interface web GitHub). J'ai cherché et j'ai trouvé différents endroits où A refs / pull ou refs / pull / pr

mais quand j'ajoute fetch = +refs/pull/*/head:refs/remotes/origin/pr/* au fichier de configuration de git et que je fais un fetch de git

Qu'est-ce que je fais de mal? GitHub devrait-il créer automatiquement le truc pull/xyz, ou dois-je configurer quelque chose?

125
demandé sur Zoe 2014-12-19 17:14:31

12 réponses

pour récupérer un PR distant dans votre local repo,

git fetch origin pull/ID/head:BRANCHNAME

où ID est l'id de la requête pull et branchname est le nom de la nouvelle branche que vous voulez créer. Une fois que vous avez créé la branche, puis tout simplement

git checkout BRANCHNAME
179
répondu timbo 2015-06-01 23:25:49

cela ira chercher sans que vous ayez à nommer une branche:

git pull origin pull/939/head

Comment puis-je obtenir une demande de traction spécifique sur ma machine?

77
répondu Steven Penny 2017-05-23 12:26:33

ce gist décrit ce qui se passe quand vous faites un git fetch:

évidemment, changez l'url github pour qu'elle corresponde à l'URL de votre projet. Il finit par ressembler à ceci:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:joyent/node.git
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

récupérez maintenant toutes les demandes de pull:

$ git fetch origin
From github.com:joyent/node
 * [new ref]         refs/pull/1000/head -> origin/pr/1000
 * [new ref]         refs/pull/1002/head -> origin/pr/1002
 * [new ref]         refs/pull/1004/head -> origin/pr/1004
 * [new ref]         refs/pull/1009/head -> origin/pr/1009
...

pour vérifier une demande de traction particulière:

$ git checkout pr/999
Branch pr/999 set up to track remote branch pr/999 from origin.
Switched to a new branch 'pr/999'

vous avez divers scripts listés dans issues 259 pour automatiser cette tâche.

Le projet git-extras propose la commande git-pr (implémentée en PR 262 )

git-pr (1) -- vérifie une demande de retrait Local

SYNOPSIS

git-pr <number> [<remote>]
git-pr clean

DESCRIPTION

crée une branche locale basée sur un numéro de demande GitHub pull, et passe à cette branche par la suite.

le nom de la télécommande. Par défaut, origin .

exemples

ceci correspond à la demande de traction 226 de origin :

$ git pr 226

remote: Counting objects: 12, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 3), reused 9 (delta 3)
Unpacking objects: 100% (12/12), done.
From https://github.com/visionmedia/git-extras
  * [new ref] refs/pull/226/head -> pr/226
Switched to branch 'pr/226'
36
répondu VonC 2014-12-19 14:26:52

je préfère aller chercher et sortir sans créer une branche locale et être dans HEAD detached state . Il me permet rapidement de vérifier la demande de traction sans polluer ma machine locale avec des branches locales inutiles.

git fetch upstream pull/ID/head && git checkout FETCH_HEAD

ID est un ID de requête pull et upstream où est la requête pull originale a été créé (il pourrait être origin , par exemple).

j'espère que ça aidera.

9
répondu Andrew Ymaz 2018-06-22 15:00:25

en référence à la réponse de Steven Penny, il est préférable de créer une branche test et tester le PR. Alors, voici ce que vous feriez.

  1. créer une branche de test pour fusionner le PR en local. En supposant que vous êtes sur la branche principale:

git checkout -b test

  1. Obtenir le PR changements dans le test de la branche

git pull origin pull/939/head:test

Maintenant, vous pouvez tester en toute sécurité les changements sur cette branche de test locale (dans ce cas, nommée test ) et une fois que vous êtes satisfait, peuvent La fusionner comme d'habitude à partir de GitHub.

8
répondu bholagabbar 2017-06-12 12:16:20

j'ai accidentellement fini par écrire presque le même que celui fourni par git-extras. Donc, si vous préférez une seule commande personnalisée au lieu d'installer un tas d'autres commandes supplémentaires, il suffit de placer ce git-pr fichier quelque part dans votre $PATH et alors vous pouvez juste écrire:

git pr 42
// or
git pr upstream 42
// or
git pr https://github.com/peerigon/phridge/pull/1
4
répondu Johannes Ewald 2015-09-24 14:22:26

si vous utilisez Github.com, cliquez sur "Pull requests", puis sur le lien "command line instructions".: command line instructions at Github.com

4
répondu AmitB 2017-02-27 16:14:40

le problème avec certaines des options ci-dessus, c'est que si quelqu'un pousse plus de commits vers le PR après avoir ouvert le PR, il ne vous donnera pas la version la plus mise à jour. Pour moi ce qui a fonctionné le mieux est-aller à la PR, et appuyez sur 'Commits', faites défiler vers le bas pour voir le dernier hash de commit enter image description here et puis il suffit d'utiliser la caisse git, i.e.

git checkout <commit number>

dans l'exemple ci-dessus

git checkout 0ba1a50

3
répondu Ariel Gabizon 2017-04-15 22:30:43

pour Bitbucket, vous devez remplacer le mot pull par pull-requests .

tout d'abord, vous pouvez confirmer le style de l'URL de la requête pull par la commande git ls-remote origin .

$ git ls-remote origin |grep pull
f3f40f2ca9509368c959b0b13729dc0ae2fbf2ae    refs/pull-requests/1503/from
da4666bd91eabcc6f2c214e0bbd99d543d94767e    refs/pull-requests/1503/merge
...

comme vous pouvez le voir, c'est refs/pull-requests/1503/from au lieu de refs/pull/1503/from

alors vous pouvez utiliser les commandes de n'importe laquelle des réponses.

3
répondu osexp2003 2018-04-06 07:40:08

vous pouvez utiliser la commande git config pour écrire une nouvelle règle à .git/config pour récupérer les requêtes de pull du dépôt:

$ git config --local --add remote.origin.fetch '+refs/pull/*/head:refs/remotes/origin/pr/*'

et puis juste:

$ git fetch origin
Fetching origin
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0
Unpacking objects: 100% (4/4), done.
From https://github.com/container-images/memcached
 * [new ref]         refs/pull/2/head -> origin/pr/2
 * [new ref]         refs/pull/3/head -> origin/pr/3
2
répondu SummerBreeze 2017-07-04 06:52:47
  1. Ouvrir le PR sur Github. En haut de la page PR est un numéro qui l'identifie - 123 et le nom de l'auteur de la branche branch-name . Copie sur les deux de ces.
  2. ouvrez git bash et assurez-vous que votre répertoire de travail est propre en exécutant git status
  3. obtenir une copie du PR en tapant git fetch upstream pull/<id>/head:<branch> . Dans cet exemple, vous taperez git fetch upstream pull/123/head:branch-name
  4. maintenant que vous avez une copie de la succursale, commutateur à l'aide de git checkout branch-name . Votre répertoire sera désormais une copie exacte du PR. Assurez-vous d'informer l'auteur de tout bogue ou de toute suggestion, car vous ne pouvez pas ajouter vos propres modifications à une demande pull directement.
  5. lorsque vous avez terminé de vérifier leur travail, utilisez git checkout master pour retourner à votre version locale du projet Porcupine

voir toutes les instructions ici - https://github.com/TeamPorcupine/ProjectPorcupine/wiki/How-to-Test-a-Pull-Request#testing-someone-elses-pull-request

1
répondu yoAlex5 2018-07-27 08:26:23

si vous suivez le workflow "GitHub fork", où vous créez une fork et ajoutez la prise en charge en amont à distance:

14:47 $ git remote -v
origin  git@github.com:<yourname>/<repo_name>.git (fetch)
origin  git@github.com:<yourname>/<repo_name>.git (push)
upstream        git@github.com:<repo_owrer>/<repo_name>.git (fetch)
upstream        git@github.com:<repo_owner>/<repo_name>.git (push)

pour tirer dans votre branche actuelle votre commande ressemblerait à:

git pull upstream pull/<pull_request_number>/head

pour tirer dans une nouvelle branche le code ressemblerait à:

git fetch upstream pull/<pull_request_number>/head:newbranch
0
répondu init0 2018-04-02 19:15:02