Pouvez-vous émettre des demandes d'extraction à partir de la ligne de commande sur GitHub?

298

Il semble que vous deviez interagir avec github.com pour lancer une demande de tirage. En est-il ainsi?

Andrew Johnson
la source
2
Je ne vois rien dans leur API pour faire des demandes de tirage: develop.github.com
Adam Vandenberg
1
Sur quel système d'exploitation comptez-vous faire cela?
IgorGanapolsky
Comment faire cela sous Windows 8 ou 10?
Mathivanan KP
J'ai créé un script bash pour cela, si quelqu'un est intéressé.
mvr

Réponses:

114

MISE À JOUR : La commande hub est maintenant un projet github officiel et prend également en charge la création de demandes d'extraction

ORIGINAL :

Semble être une chose particulièrement utile à ajouter à la commande hub: http://github.com/defunkt/hub ou la gemme github: http://github.com/defunkt/github-gem

Je suggère de déposer un problème avec les projets qui le demandent. Les gars de github sont assez réactifs.

Kanaka
la source
8
Le github-gem inclus une option pour créer des demandes de tirage pour les âges: gh pull-request [user] [branch].
Holger Just
6
Cela fonctionne-t-il sans que Github ait d'abord forké le dépôt, c'est-à-dire à partir d'un clone direct du dépôt source?
Hari Karam Singh
1
@Holger Just et n'importe qui d'autre: cela crée simplement le texte d'une demande de tirage et ne contourne pas la nécessité d'un fork sur Github. Je n'ai pas encore trouvé de solution. J'ai l'intention d'essayer bientôt l'utilitaire «pullr» ci-dessous. Voir ici pour le problème des personnes demandant un support complet de pull-request de la github-gem.
mateor
1
pour une commande rapide en utilisant hub:hub pull-request -m "message pull request" -b master -h your_branch
Gujarat Santana
Je ne sais pas pourquoi ce n'est pas mentionné dans les documents ci-dessus, mais pour une fusion rapide des demandes de tirage, consultez votre branche principalehub merge https://github.com/repo/pull/1
holmberd
53

Git est désormais livré avec une sous-commande 'git request-pull' [-p] <start> <url> [<end>]

Vous pouvez voir les documents ici

Vous pouvez trouver cela utile mais ce n'est pas exactement la même chose que la fonctionnalité de GitHub .

Zensaburou
la source
7
@NathanBasanese Il génère un texte lisible par l'homme décrivant la demande d'extraction. Les documents de git et le livre de GitHub disent d'envoyer cela par e-mail au responsable du projet, quelqu'un avec des privilèges d'écriture sur le référentiel partagé (peut-être github). Le responsable examine le texte de la demande d'extraction que vous avez envoyé (plutôt que d'utiliser le processus de demande d'extraction en ligne de github). Ils peuvent effectuer l'une git pulldes URL et des branches indiquées dans votre demande d'extraction pour fusionner vos modifications dans leur clone local et pousser ces modifications vers github.
plaques de cuisson
30

Avec l' encapsuleur de ligne de commande Hub, vous pouvez le lier à git, puis vous pouvez le faire git pull-request

Depuis la page de manuel du hub:

   git pull-request [-f] [TITLE|-i ISSUE|ISSUE-URL] [-b BASE] [-h HEAD]
          Opens a pull request on GitHub for the project that the "origin" remote points to. The default head of the pull request is the current branch. Both base and head of the pull request can be explicitly given in one  of  the  following  formats:  "branch",  "owner:branch",
          "owner/repo:branch". This command will abort operation if it detects that the current topic branch has local commits that are not yet pushed to its upstream branch on the remote. To skip this check, use -f.

          If TITLE is omitted, a text editor will open in which title and body of the pull request can be entered in the same manner as git commit message.

          If instead of normal TITLE an issue number is given with -i, the pull request will be attached to an existing GitHub issue. Alternatively, instead of title you can paste a full URL to an issue on GitHub.
Flov
la source
2
Je ne connaissais pas Hub, il est disponible via homebrew: brew install hubcela semble être la bonne réponse pour les utilisateurs de mac.
wfbarksdale
1
//, Y a-t-il un endroit en ligne vers lequel je pourrais diriger les gens pour plus d'informations sur Hub?
Nathan Basanese
19

Un homme cherche comme ...

man git | grep pull | grep request

donne

git request-pull <start> <url> [<end>]

Mais, malgré le nom, ce n'est pas ce que vous voulez. Selon les documents:

Générez une demande demandant à votre projet en amont d'extraire les modifications dans leur arborescence. La demande, imprimée sur la sortie standard, commence par la description de la branche, résume les modifications et indique d'où elles peuvent être extraites.

@HolgerJust a mentionné le joyau github qui fait ce que vous voulez:

sudo gem install gh 
gh pull-request [user] [branch]

D'autres ont mentionné le hubpackage officiel de github:

sudo apt-get install hub

ou

brew install hub 

puis

hub pull-request [-focp] [-b <BASE>] [-h <HEAD>]
plaques de cuisson
la source
3
Cela génère un résumé des modifications en attente, cela n'a rien à voir avec une demande de pull qui est émise via Github
Flov
1
@Flov Par "ceci", je suppose que vous voulez dire la git request-pullligne. Oui, cela a du sens, mais je suis surpris que git n'ait pas de commande pour envoyer des requêtes pull par e-mail comme le fait github. Après tout, le git config user.emailest à sa disposition. Surtout avec une commande nommée pull-request.
plaques de cuisson
2
Pour Ubuntu, l'apparence github-clin'est plus disponible après Precise ... J'ai ouvert une question pour demander une alternative.
IsaacS
7

J'ai fini par faire le mien , je trouve que cela fonctionne mieux que les autres solutions qui étaient autour.

https://npmjs.org/package/pullr

samccone
la source
6
J'ai essayé de faire pullr -n à l'intérieur du référentiel cloné. M'a donné une erreur d'ouverture ... / clonedRepo / undefined / .pullr-token-cache sur Windows 7. Vous voudrez peut-être avoir plus de documentation - comme un exemple d'utilisation?
BT
5

J'ai récemment créé un outil qui fait exactement ce que vous voulez:

https://github.com/jd/git-pull-request

Il automatise tout en une seule commande, en forçant le repo, en poussant le PR, etc. Il prend également en charge la mise à jour du PR si vous devez le modifier / le corriger!

jd_
la source
5

J'utilise un alias simple pour créer une requête pull,

alias pr='open -n -a "Google Chrome" --args "https://github.com/user/repo/compare/pre-master...nawarkhede:$(git_current_branch)\?expand\=1"'
Nishant Nawarkhede
la source
2

En plus de github/hub, qui agit comme un proxy pour Git , vous avez maintenant (février 2020) cli/cli:

Voir " Boostez votre expérience en ligne de commande: GitHub CLI est désormais en version bêta "

Créer une demande de tirage

Créez une branche, effectuez plusieurs validations pour corriger le bogue décrit dans le problème et utilisez gh pour créer une demande d'extraction pour partager votre contribution.

création cli / cli pr - https://i1.wp.com/user-images.githubusercontent.com/10404068/74261506-35df4080-4cb0-11ea-9285-c41583009e6c.png?ssl=1

En utilisant GitHub CLI pour créer des demandes d'extraction, il crée également automatiquement une fourchette lorsque vous n'en avez pas déjà une, et il pousse votre branche et crée votre demande d'extraction pour obtenir votre modification fusionnée.


Et en avril 2020: " GitHub CLI prend désormais en charge le remplissage automatique des demandes de tirage et la configuration personnalisée "

GitHub CLI 0.7 est sorti avec plusieurs des améliorations les plus demandées des commentaires de nos utilisateurs bêta.
Depuis la dernière version mineure, 0.6, il existe trois fonctionnalités principales:

  • Configurez ghpour utiliser votre éditeur préféré avec gh config set editor [editor].
  • Configurez ghpar défaut sur SSH avec gh config set git_protocol ssh.
    Le protocole Git par défaut est HTTPS.
  • Remplissez automatiquement le titre et le corps d'une demande de tirage de vos commits gh pr create --fill.

Alors:

gh pr create --fill
VonC
la source
1

J'ai déjà utilisé cet outil - bien qu'il semble qu'un problème soit d'abord ouvert, il est super utile et rationalise vraiment le flux de travail si vous utilisez le suivi des problèmes avec github. git open-pull, puis une demande de pull est envoyée depuis la branche sur laquelle vous vous trouvez ou sélectionnez. https://github.com/jehiah/git-open-pull

EDIT: On dirait que vous pouvez créer des problèmes à la volée, donc cet outil est une bonne solution.

Andruf
la source