Puoi inviare richieste pull dalla riga di comando su GitHub?


298

Sembra che tu debba interagire con github.com per avviare una richiesta pull. È così?


2
Non vedo nulla nella loro API per fare richieste pull: develop.github.com
Adam Vandenberg,


1
Su quale sistema operativo intendi farlo?
IgorGanapolsky

Come farlo in Windows 8 o 10?
Mathivanan KP

Ho creato uno script bash per questo, se qualcuno è interessato.
mvr,

Risposte:


114

AGGIORNAMENTO : il comando hub è ora un progetto github ufficiale e supporta anche la creazione di richieste pull

ORIGINALE :

Sembra una cosa particolarmente utile da aggiungere al comando hub: http://github.com/defunkt/hub o la gemma di github: http://github.com/defunkt/github-gem

Suggerisco di presentare un problema a quei progetti che lo richiedono. I ragazzi di github sono piuttosto reattivi.


8
Il github-gioiello incluso un impianto per creare le richieste di pull per le età: gh pull-request [user] [branch].
Holger, solo il

6
Funziona senza che Github abbia biforcuto prima il repository, ovvero da un clone diretto del repository di origine?
Hari Karam Singh

1
@Holger Just e chiunque altro: crea il testo di una richiesta pull e non elude la necessità di un fork su Github. Non ho ancora trovato un modo per aggirare questo. Ho intenzione di provare presto l'utilità 'pullr' pubblicata di seguito. Vedi qui per il numero di persone che richiedono il supporto completo per la richiesta pull dal github-gem.
mateor

1
per un comando rapido usando hub:hub pull-request -m "message pull request" -b master -h your_branch
Gujarat Santana,

Non so perché non sia menzionato nei documenti precedenti, ma per unire rapidamente la richiesta pull, dai hub merge https://github.com/repo/pull/1
un'occhiata

53

Git ora viene fornito con un sottocomando 'git request-pull' [-p] <start> <url> [<end>]

Puoi vedere i documenti qui

Potresti trovare questo utile ma non è esattamente lo stesso della funzionalità di GitHub .


7
@NathanBasanese Genera testo leggibile dall'uomo che descrive la richiesta pull. I documenti git e il libro GitHub dicono di inviarlo via e-mail al manutentore del progetto, qualcuno con privilegi di scrittura sul repository condiviso (possibilmente github). Il manutentore esamina il testo della richiesta pull che hai inviato (anziché utilizzare il processo di richiesta pull online di github). Possono eseguire git pulll'URL e il ramo indicati nella richiesta pull per unire le modifiche nel clone locale e inviare queste modifiche a github.
Piani cottura

30

Con il wrapper della riga di comando di Hub puoi collegarlo a git e poi puoi farlo git pull-request

Dalla pagina man dell'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.

2
Non sapevo di Hub, è disponibile tramite homebrew: brew install hubquesta sembra la risposta corretta per gli utenti mac.
wfbarksdale,

1
// Esiste un sito online a cui posso indirizzare le persone per ulteriori informazioni su Hub?
Nathan Basanese,

19

Un uomo cerca come ...

man git | grep pull | grep request

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

Ma, nonostante il nome, non è quello che vuoi. Secondo i documenti:

Genera una richiesta che chiede al tuo progetto upstream di inserire le modifiche nella loro struttura. La richiesta, stampata sull'output standard, inizia con la descrizione del ramo, riepiloga le modifiche e indica da dove possono essere estratte.

@HolgerJust ha menzionato la gemma github che fa quello che vuoi:

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

Altri hanno menzionato il hubpacchetto ufficiale di github:

sudo apt-get install hub

o

brew install hub 

poi

hub pull-request [-focp] [-b <BASE>] [-h <HEAD>]

3
Questo genera un riepilogo delle modifiche in sospeso, non ha nulla a che fare con una richiesta pull che viene emessa tramite Github
Flov

1
@Flov Per "Questo", presumo tu intenda la git request-pulllinea. Sì, questo ha senso, ma sono sorpreso che Git non abbia un comando per inviare richieste pull come Github. Dopotutto, git config user.emailè disponibile. Soprattutto con un comando chiamato pull-request.
Piani cottura

2
Per Ubuntu, sembra che github-clinon sia più disponibile dopo Precise ... Ho aperto una domanda per chiedere un'alternativa.
Isacco

7

Ho finito per crearne uno mio , trovo che funzioni meglio delle altre soluzioni in circolazione.

https://npmjs.org/package/pullr


6
Ho provato a fare pullr -n all'interno del repository clonato. Mi ha dato un errore durante l'apertura ... / clonedRepo / undefined / .pullr-token-cache su Windows 7. Potresti voler avere un po 'più di documentazione - come un esempio di utilizzo?
BT,

5

Di recente ho creato uno strumento che fa esattamente quello che vuoi:

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

Automatizza tutto in un singolo comando, eseguendo il fork del repository, spingendo il PR ecc. Supporta anche l'aggiornamento del PR se è necessario modificarlo / ripararlo!


5

Sto usando un semplice alias per creare una richiesta pull,

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

2

Inoltre github/hub, che funge da proxy per Git , ora (febbraio 2020) hai cli/cli:

Vedi " Migliora la tua esperienza da riga di comando: la CLI di GitHub è ora in versione beta "

Crea una richiesta pull

Crea una diramazione, effettua diversi commit per correggere il bug descritto nel problema e usa gh per creare una richiesta pull per condividere il tuo contributo.

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

Utilizzando l'interfaccia della riga di comando di GitHub per creare richieste pull, crea anche automaticamente un fork quando non ne hai già uno, e spinge il tuo ramo e crea la tua richiesta pull per unire le tue modifiche.


E nell'aprile 2020: " CLI GitHub ora supporta richieste pull di compilazione automatica e configurazione personalizzata "

GitHub CLI 0.7 è disponibile con alcuni dei miglioramenti più richiesti dal feedback fornito dai nostri utenti beta.
Dall'ultima versione minore, la 0.6, ci sono tre caratteristiche principali:

  • Configura ghper utilizzare il tuo editor preferito con gh config set editor [editor].
  • Configurare ghl'impostazione predefinita su SSH con gh config set git_protocol ssh.
    Il protocollo Git predefinito è HTTPS.
  • Riempi automaticamente il titolo e il corpo di una richiesta pull dai tuoi commit con gh pr create --fill.

Così:

gh pr create --fill

1

Ho usato questo strumento prima, anche se sembra che prima ci debba essere un problema aperto, è super utile e semplifica davvero il flusso di lavoro se usi il tracciamento dei problemi di Github. git open-pull e quindi una richiesta pull viene inviata da qualsiasi ramo in cui ci si trova o si seleziona. https://github.com/jehiah/git-open-pull

EDIT: sembra che tu possa creare problemi al volo, quindi questo strumento è una buona soluzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.