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?
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
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?
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
deorigin
:
$ 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'
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
où 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.
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.
- 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
- 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.
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
si vous utilisez Github.com, cliquez sur "Pull requests", puis sur le lien "command line instructions".:
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 et puis il suffit d'utiliser la caisse git, i.e.
git checkout <commit number>
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 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.
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
- 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 branchebranch-name
. Copie sur les deux de ces. - ouvrez git bash et assurez-vous que votre répertoire de travail est propre en exécutant
git status
- obtenir une copie du PR en tapant
git fetch upstream pull/<id>/head:<branch>
. Dans cet exemple, vous taperezgit fetch upstream pull/123/head:branch-name
- 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. - 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
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