Comment puis-je extraire une requête de tirage GitHub?

Je voudrais vérifier une requête de tirage précédemment créée (créée via l’interface Web de GitHub). J’ai cherché et trouvé différents endroits où un refs / pull ou refs / pull / pr

Mais quand j’ajoute fetch = +refs/pull/*/head:refs/remotes/origin/pr/* au fichier de configuration git et fait un git fetch

Qu’est-ce que je fais mal? GitHub doit-il créer automatiquement les éléments pull / xyz ou dois-je configurer quelque chose?

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

 Git récupère l'origine pull / ID / tête: BRANCHNAME

où ID est l’ID de la requête d’extraction et le nom de la twig est le nom de la nouvelle twig que vous souhaitez créer. Une fois que vous avez créé la twig, alors simplement

 Git checkout BRANCHNAME

Cela ira chercher sans que vous ayez à nommer une twig:

 git pull origin pull/939/head 

Comment puis-je obtenir une requête de tirage spécifique sur ma machine?

Cet aperçu décrit ce qui s’est passé quand vous faites un Git Fetch:

Évidemment, changez l’URL de 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/* 

Maintenant, récupérez toutes les requêtes d’extraction:

 $ 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 tirage 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 plusieurs scripts répertoriés dans les problèmes 259 pour automatiser cette tâche.
Le projet git-extras propose la commande git-pr (implémentée dans PR 262 )

git-pr (1) – Vérifie localement une demande d’extraction

SYNOPSIS

 git-pr  [] git-pr clean 

LA DESCRIPTION

Crée une twig locale basée sur un numéro de requête d’extraction GitHub, puis passe à cette twig.

Le nom de la télécommande à récupérer. Par défaut à l’ origin .

EXEMPLES

Cela vérifie la requête de tirage 226 d’ 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' 

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

  1. Créez une twig de test pour fusionner le PR en local. En supposant que vous êtes sur la twig principale:

git checkout -b test

  1. Obtenir les modifications PR dans la twig de test

git pull origin pull/939/head:test

Maintenant, vous pouvez tester en toute sécurité les modifications sur cette twig de test locale (dans ce cas, nommé test ) et une fois que vous êtes satisfait, vous pouvez le fusionner normalement avec GitHub.

Je préfère récupérer et valider sans créer de twig locale et être en état détaché HEAD . Cela me permet de vérifier rapidement la requête de traction sans polluer ma machine locale avec des twigs locales inutiles.

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

ID est un ID de requête d’extraction et en upstream où la demande d’extraction d’origine a été créée (il peut s’agir de l’ origin , par exemple).

J’espère que ça aide.

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, placez simplement ce fichier git-pr quelque part dans votre $PATH , puis écrivez simplement:

 git pr 42 // or git pr upstream 42 // or git pr https://github.com/peerigon/phridge/pull/1 

Si vous utilisez Github.com, allez dans “Pull requêtes”, cliquez sur la demande de tirage appropriée, puis cliquez sur le lien “instructions de ligne de commande”: instructions en ligne de commande sur Github.com

Le problème avec certaines des options ci-dessus 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 à jour. Pour moi, ce qui a le mieux fonctionné – allez au PR et appuyez sur «Commits», faites défiler vers le bas pour voir le hash de validation le plus récent entrer la description de l'image ici puis utilisez simplement la commande git, c’est-à-dire

git checkout

dans l’exemple ci-dessus

git checkout 0ba1a50

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

Tout d’abord, vous pouvez confirmer le style d’URL de requête d’extraction 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, il est refs/pull-requests/1503/from place de refs/pull/1503/from

Ensuite, vous pouvez utiliser les commandes de l’une des réponses.

Vous pouvez utiliser la commande git config pour écrire une nouvelle règle dans le .git/config afin de récupérer les requêtes à partir du référentiel:

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

Et alors 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 
  1. Ouvrez le PR sur Github. En haut de la page PR se trouve un numéro qui l’identifie – 123 et le nom de la twig de l’auteur – nom de la branch-name . Recopiez les deux.
  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//head: . Dans cet exemple, vous devez taper git fetch upstream pull/123/head:branch-name
  4. Maintenant que vous avez une copie de la twig, utilisez-la en utilisant le git checkout branch-name . Votre répertoire sera désormais une copie exacte du PR. Assurez-vous d’informer l’auteur des bogues ou des suggestions, car vous ne pouvez pas append directement vos propres modifications à une demande d’extraction.
  5. Lorsque vous avez fini de vérifier leur travail, utilisez git checkout master pour retourner à votre version locale de Project Porcupine.

Voir les instructions complètes ici – https://github.com/TeamPorcupine/ProjectPorcupine/wiki/How-to-Test-a-Pull-Request#testing-someone-elses-pull-request

Si vous suivez le workflow “github fork”, où vous créez un fork et ajoutez le référentiel amont distant:

 14:47 $ git remote -v origin git@github.com:/.git (fetch) origin git@github.com:/.git (push) upstream git@github.com:/.git (fetch) upstream git@github.com:/.git (push) 

pour entrer dans votre twig actuelle, votre commande ressemblerait à ceci:

 git pull upstream pull//head 

pour créer une nouvelle twig, le code ressemblerait à ceci:

 git fetch upstream pull//head:newbranch