Können Sie Pull-Anforderungen über die Befehlszeile auf GitHub ausgeben?

298

Anscheinend müssen Sie mit github.com interagieren, um eine Pull-Anfrage zu initiieren. Ist das so

Andrew Johnson
quelle
2
Ich sehe nichts in ihrer API für Pull-Anfragen: Develop.github.com
Adam Vandenberg
1
Auf welchem ​​Betriebssystem möchten Sie dies tun?
Igor Ganapolsky
Wie geht das in Windows 8 oder 10?
Mathivanan KP
Ich habe ein Bash-Skript dafür erstellt, falls jemand interessiert ist.
mvr

Antworten:

114

UPDATE : Der Hub- Befehl ist jetzt ein offizielles Github-Projekt und unterstützt auch das Erstellen von Pull-Anforderungen

ORIGINAL :

Scheint eine besonders nützliche Sache zu sein, um den Hub-Befehl hinzuzufügen: http://github.com/defunkt/hub oder das Github-Juwel: http://github.com/defunkt/github-gem

Ich schlage vor, ein Problem bei den Projekten einzureichen, die danach fragen. Die Github-Jungs sind ziemlich reaktionsschnell.

Kanaka
quelle
8
Das Github-Juwel enthielt eine Möglichkeit, Pull-Anfragen für Alter zu erstellen : gh pull-request [user] [branch].
Holger nur
6
Funktioniert es, ohne dass Github das Repo zuerst gegabelt hat, dh von einem direkten Klon des Quell-Repos?
Hari Karam Singh
1
@Holger Just und alle anderen: Das erstellt nur den Text einer Pull-Anfrage und umgeht nicht die Notwendigkeit einer On-Github-Gabel. Daran habe ich noch keinen Weg gefunden. Ich beabsichtige, das unten veröffentlichte Dienstprogramm 'pullr' bald auszuprobieren. Siehe hier für die Ausgabe von Menschen anfordernden voll Pull-Anfrage Unterstützung der Github-gem.
Mateor
1
für schnelles Kommando mit hub:hub pull-request -m "message pull request" -b master -h your_branch
Gujarat Santana
Ich weiß nicht, warum es in den obigen Dokumenten nicht erwähnt wird, aber für eine schnelle Zusammenführung von Pull-Anfragen hub merge https://github.com/repo/pull/1
überprüfen Sie
53

Git wird jetzt mit einem Unterbefehl ausgeliefert 'git request-pull' [-p] <start> <url> [<end>]

Sie können die Dokumente sehen hier sehen

Sie mögen dies nützlich finden, aber es ist nicht genau das gleiche wie die Funktion von GitHub .

Zensaburou
quelle
7
@NathanBasanese Erzeugt einen lesbaren Text, der die Pull-Anforderung beschreibt. In den Git-Dokumenten und im GitHub- Buch wird angegeben, dass dies per E-Mail an den Projektbetreuer gesendet werden soll, der über Schreibrechte für das gemeinsam genutzte Repo (möglicherweise Github) verfügt. Der Betreuer überprüft den von Ihnen gesendeten Pull-Request-Text (anstatt den Online-Pull-Request-Prozess von github zu verwenden). Sie können eine git pullder in Ihrer Pull-Anfrage angegebenen URLs und Zweige ausführen, um Ihre Änderungen in ihrem lokalen Klon zusammenzuführen und diese Änderungen auf Github zu übertragen.
Kochfelder
30

Mit dem Hub-Befehlszeilen-Wrapper können Sie ihn mit git verknüpfen und dann tun git pull-request

Aus der Manpage von 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
quelle
2
Wusste nichts über Hub, es ist über Homebrew erhältlich: brew install hubDies scheint die richtige Antwort für Mac-Benutzer zu sein.
wfbarksdale
1
//, Gibt es irgendwo online, auf das ich Leute verweisen könnte, um weitere Informationen über Hub zu erhalten?
Nathan Basanese
19

Ein Mann sucht wie ...

man git | grep pull | grep request

gibt

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

Aber trotz des Namens ist es nicht das, was Sie wollen. Laut den Dokumenten:

Generieren Sie eine Anfrage, in der Ihr Upstream-Projekt aufgefordert wird, Änderungen in den Baum zu übernehmen. Die auf die Standardausgabe gedruckte Anforderung beginnt mit der Verzweigungsbeschreibung, fasst die Änderungen zusammen und gibt an, von wo sie abgerufen werden können.

@ HolgerJust erwähnte das Github-Juwel, das macht, was Sie wollen:

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

Andere haben das offizielle hubPaket von Github erwähnt:

sudo apt-get install hub

oder

brew install hub 

dann

hub pull-request [-focp] [-b <BASE>] [-h <HEAD>]
Kochfelder
quelle
3
Dies generiert eine Zusammenfassung der ausstehenden Änderungen. Es hat nichts mit einer Pull-Anfrage zu tun, die über Github
Flov
1
@Flov Mit "This" meine ich wohl die git request-pullZeile. Ja, das macht Sinn, aber ich bin überrascht, dass git keinen Befehl hat, Pull-Anfragen per E-Mail zu versenden, wie es Github tut. Immerhin steht das ihm git config user.emailzur Verfügung. Besonders mit einem Befehl namens pull-request.
Kochfelder
2
Für Ubuntu scheint github-clies nach Precise nicht mehr verfügbar zu sein ... Ich habe eine Frage geöffnet , um nach einer Alternative zu fragen.
IsaacS
7

Am Ende habe ich meine eigenen gemacht und finde, dass es besser funktioniert als die anderen Lösungen, die es gab.

https://npmjs.org/package/pullr

Samccone
quelle
6
Es wurde versucht, pullr -n im geklonten Repository auszuführen. Hat mir einen Fehler beim Öffnen gegeben ... / clonedRepo / undefined / .pullr-token-cache unter Windows 7. Vielleicht möchten Sie mehr Dokumentation - wie eine Beispielverwendung?
BT
5

Ich habe kürzlich ein Tool erstellt, das genau das tut, was Sie wollen:

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

Es automatisiert alles in einem einzigen Befehl, gabelt das Repo, drückt die PR usw. Es unterstützt auch die Aktualisierung der PR, wenn Sie sie bearbeiten / reparieren müssen!

jd_
quelle
5

Ich verwende einen einfachen Alias, um eine Pull-Anfrage zu erstellen.

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

Darüber hinaus haben Sie jetzt (Februar 2020) github/hub, was als Proxy für Git fungiertcli/cli :

Siehe " Laden Sie Ihre Befehlszeilenerfahrung auf: GitHub CLI ist jetzt in der Beta "

Erstellen Sie eine Pull-Anfrage

Erstellen Sie einen Zweig, führen Sie mehrere Commits durch, um den im Problem beschriebenen Fehler zu beheben, und erstellen Sie mit gh eine Pull-Anforderung, um Ihren Beitrag zu teilen.

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

Durch die Verwendung der GitHub-CLI zum Erstellen von Pull-Anforderungen wird automatisch eine Verzweigung erstellt, wenn Sie noch keine haben. Außerdem wird Ihr Zweig verschoben und Ihre Pull-Anforderung erstellt, damit Ihre Änderung zusammengeführt wird.


Und im April 2020: " GitHub CLI unterstützt jetzt das automatische Ausfüllen von Pull-Anforderungen und die benutzerdefinierte Konfiguration. "

GitHub CLI 0.7 ist mit einigen der am häufigsten nachgefragten Verbesserungen aufgrund des Feedbacks unserer Beta-Benutzer erhältlich.
Seit der letzten Nebenversion 0.6 gibt es drei Hauptmerkmale:

  • Konfigurieren Sie ghdie Verwendung Ihres bevorzugten Editors mit gh config set editor [editor].
  • Konfigurieren Sie ghstandardmäßig SSH mit gh config set git_protocol ssh.
    Das Standard-Git-Protokoll ist HTTPS.
  • Füllen Sie den Titel und den Text einer Pull-Anfrage aus Ihren Commits automatisch mit aus gh pr create --fill.

So:

gh pr create --fill
VonC
quelle
1

Ich habe dieses Tool bereits verwendet - obwohl es den Anschein hat, dass zuerst ein Problem offen sein muss, ist es sehr nützlich und rationalisiert den Workflow wirklich, wenn Sie die Github-Problemverfolgung verwenden. git open-pull und dann wird eine Pull-Anfrage von jedem Zweig gesendet, in dem Sie sich befinden oder den Sie auswählen. https://github.com/jehiah/git-open-pull

BEARBEITEN: Sieht so aus, als könnten Sie Probleme im laufenden Betrieb erstellen, daher ist dieses Tool eine gute Lösung.

Andruf
quelle