Clone GitHub à partir de la requête pull?

Je voudrais cloner un repository de GitHub. Le problème est que je ne veux pas la twig principale; Je veux la version dans cette demande de tirage non approuvée .

Est-il possible de cloner la version de la requête pull au lieu du référentiel principal?

Vous pouvez cloner la twig de votre choix en utilisant l’option -b dans la commande git clone .

Dans votre cas, la twig que vous voulez cloner est la twig source de la requête pull (feature / mongoose-support):

 git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone 

La façon la plus simple de procéder est la suivante:

 git fetch origin pull/2/head git checkout -b pullrequest FETCH_HEAD 

Vous allez maintenant être sur une nouvelle twig qui se trouve dans l’état de la requête d’extraction.

 git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH 

par exemple:

 $ git fetch origin pull/611/head:pull_611 $ git checkout pull_611 

Apportez des modifications, validez-les, appuyez sur PUSH et ouvrez un nouveau PR à partir de votre fourche sur GitHub

Vous pouvez suivre les instructions de cet article pour pouvoir vérifier la télécommande directement sans avoir à trouver leur repository et leur succursale.

Exemple d’utilisation

Pour l’un de mes projets (github3.py), j’ai ce qui suit dans mon github3.py/.git/config

 [remote "github"] fetch = +refs/heads/*:refs/remotes/github/* fetch = +refs/pull/*/head:refs/remotes/github/pr/* url = git@github.com:sigmavirus24/github3.py 

La première ligne est ce qui est standard pour chaque télécommande, à l’exception du fait que github est remplacé par le nom de la télécommande. Cela signifie que les têtes distantes (ou les têtes de twigs sur ce serveur) sont “mappées” sur des télécommandes locales préfixées par github/ . Donc si je git fetch github et que j’avais une twig sur GitHub qui n’était pas déjà remarquée localement sur ma machine, cela téléchargerait la twig et je pourrais y passer comme ceci: git checkout -t github/branch_name .

La deuxième ligne fait la même chose, mais elle le fait pour les requêtes à la place des twigs standard de git. C’est pourquoi vous voyez refs/pull/*/head . Il récupère la tête de chaque requête de pull sur GitHub et le mappe à github/pr/# . Donc, si quelqu’un envoie une demande de tirage et qu’il est numéroté 62 (par exemple), vous feriez:

 git fetch github git checkout -t github/pr/62 

Et puis vous seriez sur une twig locale appelée pr/62 (en supposant qu’il n’existe pas déjà). C’est bien et cela signifie que vous n’avez pas à suivre les télécommandes ou les succursales d’autres personnes.

Lorsqu’un utilisateur soumet une demande d’extraction, il demande que certaines modifications soient fusionnées à partir d’une twig de leur clone de fork vers le référentiel d’un autre utilisateur.

Les modifications souhaitées peuvent être obtenues à partir de la source de la requête d’extraction. Pour ce faire, git://github.com/berstend/frappe.git le référentiel de l’utilisateur ( git://github.com/berstend/frappe.git ), puis git://github.com/berstend/frappe.git la twig à partir de laquelle il a créé la requête d’extraction ( feature/mongoose-support ).

Après l’installation de git-extras

 (cd /tmp && git clone --depth 1 https://github.com/tj/git-extras.git && cd git-extras && sudo make install) 

Vous pouvez simplement utiliser git pr

 $ git pr 62 [remote] 

Cette requête de tirage montre les commits de la fourchette de cette personne, vous pouvez donc voir qu’il fait passer ses modifications de la twig de feature/mongoose-support de feature/mongoose-support .

Vous pouvez cloner son référentiel et extraire cette twig

 git clone git://github.com/dweldon/frappe cd frappe git pull origin pull/2/head 

Comment puis-je récupérer une requête de tirage non fusionnée pour une twig que je ne possède pas?