web-dev-qa-db-fra.com

Comment puis-je vérifier une demande de retrait GitHub?

Je voudrais vérifier une demande de pull précédemment créée (créée via l'interface Web 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 que je fais une récupération git

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

147
GarfieldKlon

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

 git fetch Origine pull/ID/tête: BRANCHNAME 

où ID est l'identifiant de la demande d'extraction et nom de la branche est le nom de la nouvelle branche que vous souhaitez créer. Une fois que vous avez créé la branche, puis simplement

 git checkout BRANCHNAME 
215
timbo

Cela ira sans que vous ayez à nommer une branche:

git pull Origin pull/939/head

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

89
Steven Penny

This Gist ne décrit ce qui est arrivé quand vous faites un git chercher:

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

[remote "Origin"]
    fetch = +refs/heads/*:refs/remotes/Origin/*
    url = [email protected]:joyent/node.git
    fetch = +refs/pull/*/head:refs/remotes/Origin/pr/*

Maintenant, récupérez toutes les demandes 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 d'extraction 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 répertoriés dans numéros 259 pour automatiser cette tâche.
Le projet git-extras propose la commande git-pr (implémentée dans PR 262 )

git-pr (1) - Extrait une demande d'extraction localement

SYNOPSIS

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

LA DESCRIPTION

Crée une branche locale basée sur un numéro de demande d'extraction GitHub, puis bascule sur cette branche.

Le nom de la télécommande à récupérer. La valeur par défaut est Origin.

EXEMPLES

Ceci extrait la demande d'extraction 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'
40
VonC

Je préfère aller chercher et extraire sans créer de branche locale et être dans HEAD détaché . Cela me permet de vérifier rapidement la demande d'extraction 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 demande d'extraction et upstream où est la demande d'extraction d'origine a été créée (il peut s'agir de Origin, par exemple).

J'espère que ça aide.

19
Andrew Ymaz

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

  1. Créez une branche de test pour fusionner le PR en local. En supposant que vous soyez sur la branche master:

git checkout -b test

  1. Recevez les changements de relations publiques dans la branche test

git pull Origin pull/939/head:test

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

10
bholagabbar

Si vous utilisez Github.com, allez dans "Demandes d'extraction", cliquez sur la demande d'extraction appropriée, puis sur le lien "Instructions de ligne de commande":  command line instructions at Github.com

8
AmitB

Vous pouvez utiliser la commande git config pour écrire une nouvelle règle dans .git/config afin d'extraire les demandes d'extraction du référentiel:

$ 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
5
SummerBreeze
  1. Ouvrez le PR sur Github. En haut de la page PR figure un numéro qui l'identifie - 123 et le nom de la branche de l'auteur - branch-name. Copiez 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/<id>/head:<branch>. Dans cet exemple, vous tapez git fetch upstream pull/123/head:branch-name
  4. Maintenant que vous avez une copie de la branche, passez-la à l'aide de git checkout branch-name. Votre répertoire sera maintenant une copie exacte du PR. Assurez-vous d'informer l'auteur de tout bogue ou suggestion, car vous ne pouvez pas ajouter directement vos propres modifications à une demande d'extraction.
  5. Lorsque vous avez terminé de vérifier leur travail, utilisez git checkout master pour revenir à votre version locale de Project Porcupine.

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

5
yoAlex5

J'ai accidentellement fini par écrire presque la même chose que celle fournie par git-extras. Donc, si vous préférez une seule commande personnalisée au lieu d'installer un ensemble d'autres commandes supplémentaires, placez simplement ce fichier git-pr quelque part dans votre $PATH et vous pourrez alors écrire:

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

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

Tout d'abord, vous pouvez confirmer le style d'URL de demande 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 constater, il s'agit de refs/pull-requests/1503/from au lieu de refs/pull/1503/from

Ensuite, vous pouvez utiliser les commandes de n’importe laquelle des réponses. 

4
osexp2003

Le problème avec certaines des options ci-dessus, est que si quelqu'un insère plus d'engagement dans le PR après l'ouverture du PR, il ne vous donnera pas la version la plus à jour .. appuyez sur 'Commits', faites défiler jusqu'au bottom pour afficher le hachage de validation le plus récent  enter image description here puis utilisez simplement git checkout, c.-à-d.

git checkout <commit number>

dans l'exemple ci-dessus

git checkout 0ba1a50

3
Ariel Gabizon

Si vous suivez le flux de travail "github fork", vous créez un fork et ajoutez le référentiel en amont distant:

14:47 $ git remote -v
Origin  [email protected]:<yourname>/<repo_name>.git (fetch)
Origin  [email protected]:<yourname>/<repo_name>.git (Push)
upstream        [email protected]:<repo_owrer>/<repo_name>.git (fetch)
upstream        [email protected]:<repo_owner>/<repo_name>.git (Push)

pour tirer dans votre branche actuelle votre commande ressemblerait à ceci:

git pull upstream pull/<pull_request_number>/head

pour tirer dans une nouvelle branche, le code ressemblerait à ceci:

git fetch upstream pull/<pull_request_number>/head:newbranch
3
init0

J'utilise hub, un outil de github: https://github.com/github/hub

Avec hub, vérifier une demande de retrait localement est un peu facile:

hub checkout https://github.com/owner/repo/pull/1234
or
hub pr checkout 1234
0
Daniel Wehner