web-dev-qa-db-fra.com

Le clone GitHub de la demande de tirage?

Je voudrais cloner un dépôt de GitHub. Le problème est que je ne veux pas de branche principale; Je veux la version dans cette demande d'extraction non approuvée .

Est-il possible pour moi de cloner la version de la requête d'extraction à la place du référentiel principal?

97
Fresheyeball

Vous pouvez cloner la branche souhaitée à l'aide de l'option -b dans la commande git clone.

Dans votre cas, la branche que vous souhaitez cloner est la branche source de la demande d'extraction (feature/mongoose-support):

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

La façon la plus simple de le faire est la suivante:

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

Vous allez maintenant être sur une nouvelle branche qui est sur l'état de la demande d'extraction.

84
Chronial
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 et ouvrez un nouveau PR depuis votre fork sur GitHub.

29
wierzbiks

Vous pouvez suivre les instructions de cet article pour pouvoir vérifier directement la télécommande sans avoir à déterminer son référentiel et sa branche.

Exemple d'utilisation

Pour l'un de mes projets (github3.py), j'ai le suivant dans mon github3.py/.git/config

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

La première ligne correspond à la norme 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 branches sur ce serveur) sont "mappées" sur des télécommandes locales préfixées par github/. Donc, si je connaissais git fetch github et que j'avais une branche sur GitHub qui n'était pas déjà remarquée localement sur ma machine, la branche serait téléchargée et je pourrais y accéder comme suit: git checkout -t github/branch_name.

La deuxième ligne fait la même chose, mais elle le fait pour les demandes d'extraction au lieu des branches git standard. C'est pourquoi vous voyez refs/pull/*/head. Il récupère la tête de chaque demande d'extraction sur GitHub et la mappe sur github/pr/#. Donc, si quelqu'un envoie une demande d'extraction et qu'elle porte le numéro 62 (par exemple), vous feriez:

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

Et alors vous seriez sur une branche locale appelée pr/62 (en supposant que cela n'existait pas déjà). C'est agréable et vous évite de garder la trace des télécommandes ou des branches d'autres personnes.

15

Lorsqu'un utilisateur soumet une demande d'extraction, il demande que certaines modifications soient fusionnées depuis une branche de son clone de fork vers le référentiel d'un autre utilisateur.

Les modifications que vous souhaitez peuvent être obtenues à partir de la source de la demande d'extraction. Pour ce faire, clonez le référentiel de l'utilisateur (git://github.com/berstend/frappe.git), puis consultez la branche à partir de laquelle il a créé la demande d'extraction (feature/mongoose-support).

5
adrianbanks
git clone git://github.com/dweldon/frappe
cd frappe
git pull Origin pull/2/head

Comment puis-je récupérer une demande d'extraction non fusionnée pour une branche que je ne possède pas?

2
Steven Penny

Après avoir installé 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]
2
megawac

Cette demande d'extraction affiche les commits de la branche de cette personne afin que vous puissiez voir qu'il envoie ses modifications depuis la branche feature/mongoose-support.

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

0
Kartik