Je voudrais cloner un référentiel depuis GitHub. Le problème est que je ne veux pas de la branche principale; Je veux la version dans cette demande d'extraction non approuvée .
Est-il possible pour moi de cloner la version pull request au lieu du référentiel principal?
git
github
pull-request
Fresheyeball
la source
la source
clone
mais pourfetch
voir: stackoverflow.com/questions/6743514/…Réponses:
Vous pouvez cloner la branche de votre
-b
choix en utilisant l' option et pour pull request:Dans votre cas, la branche que vous souhaitez cloner est la branche source de la pull request (
feature/mongoose-support
):la source
La façon la plus simple de le faire est la suivante:
Vous allez maintenant être sur une nouvelle branche qui est sur l'état de la pull request.
Vous souhaiterez peut-être configurer un alias en exécutant
Vous pouvez maintenant vérifier n'importe quel PR en exécutant
git pr <pr_number>
, ougit pr <pr_number> <remote>
si votre télécommande github n'est pas nomméeorigin
.la source
git fetch origin pull/<#>/head:<local_branch_name>
( via ).gitconfig
fichier sous[alias]
:pr = "!f() { git fetch $1 pull/$2/head:pull_$2; git co pull_$2; }; f"
. De cette façon, je viens de tapergit pr upstream 62
et la prochaine chose que je sais, je suis sur une nouvelle branche de PR # 62 en amont! Si vous utilisez toujours,origin
vous pouvez le coder en dur au lieu du$1
, mais cela change pour moi.co
par exemple:
Apportez des modifications, validez-les, PUSH et ouvrez un nouveau PR à partir de votre fourchette sur GitHub
la source
Vous pouvez suivre les instructions de cet article pour pouvoir extraire directement la télécommande sans avoir à déterminer leur référentiel et leur branche.
Exemple d'utilisation
Pour l'un de mes projets (github3.py), j'ai ce qui suit dans mon
github3.py/.git/config
La première ligne est ce qui est standard pour chaque télécommande à l'exception qui
github
est remplacée par le nom de la télécommande. Cela signifie que les têtes distantes (ou les têtes de succursales sur ce serveur) sont "mappées" sur les télécommandes locales précédées du préfixegithub/
. Donc , si je l' ai faitgit fetch github
et avait une branche sur GitHub qui n'a pas été déjà remarqué localement sur ma machine, il téléchargeait la branche et je pourrais 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 d'extraction au lieu des branches git standard. Voilà pourquoi vous voyez
refs/pull/*/head
. Il récupère la tête de chaque pull request sur GitHub et la mappe versgithub/pr/#
. Donc, si quelqu'un envoie une pull request et qu'elle porte le numéro 62 (par exemple), vous feriez:Et puis vous seriez sur une branche locale appelée
pr/62
(en supposant qu'elle n'existait pas déjà). C'est bien et cela signifie que vous n'avez pas à garder une trace des télécommandes ou des succursales des autres.la source
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
partir du document essentiel.git fetch github
vous pouvez le fairegit co -t github/pr/#
. Cela vous évite d'avoir à copier et coller l'URL distante, à trouver le nom de la branche, etc. Vous obtenez alors des noms de branche bien nommés, concis et précis sans tracas supplémentaire. Mais je comprends que cela peut sembler accablant.Comment puis-je récupérer une pull request non fusionnée pour une branche que je ne possède pas?
la source
git pull
crée une fusion dans la branche actuelle; généralement pour un PR, vous voudriez simplementgit fetch
obtenir le code de l'auteur original (il est alors accessible en tant que FETCH_HEAD). Si vous voulez une fusion, cela vaut également la peine de mentionnerpull/2/merge
(au lieu depull/2/head
) - cela fait que GitHub vous donne le commit de fusion exact qui se produirait si vous cliquiez maintenant sur le bouton [Fusionner].Lorsqu'un utilisateur soumet une pull request, il demande que certaines modifications soient fusionnées à partir d'une branche sur son clone d'un fork vers le référentiel d'un autre utilisateur.
Les modifications souhaitées 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 extrayez la branche à partir de laquelle il a créé la demande d'extraction (feature/mongoose-support
).la source
Après avoir installé git-extras
Vous pouvez simplement utiliser
git pr
la source
Avec la nouvelle interface de ligne de commande officielle de Github :
où
44
est le numéro PR, mais peut également être le nom de la succursale.Voir les détails et options supplémentaires et les instructions d'installation .
la source
Cette demande d'extraction montre les validations de la fourchette de cette personne afin que vous puissiez voir qu'il pousse ses modifications depuis la
feature/mongoose-support
branche.Vous pouvez cloner son référentiel et récupérer cette branche
la source
Pour moi, c'était aussi simple que
Où a
4
été trouvé ici:la source