Wie ändere ich den Basiszweig einer Pull-Anfrage?

79

Ich habe eine Pull-Anfrage für ein Projekt auf GitHub für einen bestimmten Remote-Zweig erstellt. Nach einiger Zeit wurde der Remote-Zweig gelöscht.

Wie kann ich die Pull-Anforderung so ändern, dass sie (speziell master) auf einen anderen Zweig verweist ?

Marcos Vinícius da Silva
quelle
3
Ebenfalls angefordert unter: github.com/isaacs/github/issues/18 , Nachricht an GitHub gesendet und Standard "Wir werden unsere interne Bugtracker-Antwort ergänzen" erhalten.
Ciro Santilli 法轮功 冠状 病 六四 事件 28

Antworten:

79

Aktualisiert: Wie Michael unten bemerkt, ist dies jetzt möglich :

Sie können jetzt den Basiszweig einer Open-Pull-Anforderung ändern. Nachdem Sie eine Pull-Anforderung erstellt haben, können Sie den Basiszweig so ändern, dass die Änderungen in der Pull-Anforderung mit einem anderen Zweig verglichen werden. Wenn Sie den Basiszweig Ihrer ursprünglichen Pull-Anforderung ändern, anstatt einen neuen mit dem richtigen Basiszweig zu öffnen, können Sie wertvolle Arbeit und Diskussion behalten.

Klicken Sie auf die EditSchaltfläche neben dem Titel der Pull-Anforderung, um den Basiszweig-Selektor anzuzeigen.

Ein animiertes Beispiel zum Ändern des Basiszweigs einer Pull-Anforderung.


Alte Antwort

Das kannst du nicht. Stellen Sie einfach eine neue Pull-Anfrage.

Bernstein
quelle
10
direkt auf den Punkt, aber nicht unbedingt wahr - siehe diese Antwort.
Tom
7
Sich auf undokumentierte (und möglicherweise unbeabsichtigte) API-Funktionen zu verlassen, ist ein Rezept für Traurigkeit auf der ganzen Linie.
Amber
15
Niemand sagte etwas darüber, sich auf undokumentierte API-Funktionen zu verlassen. Diese Frage verlangt nach einer Lösung für ein einmaliges Problem, nicht nach einer dauerhaft unterstützten laufenden Lösung. Unabhängig davon ist es einfach falsch zu sagen, dass "Sie nicht können".
Tom
5
In beiden Fällen ist die undokumentierte API jetzt defekt (siehe Kommentare der anderen Antwort), und das ist ziemlich traurig.
Dequis
2
Ab dem 15.08.2016 können Sie. Siehe Michaels Antwort.
Maliayas
35

Obwohl nicht dokumentiert, können Sie dies mit der GitHub-REST-API tun.

Die Verwendung der API wird in dieser Antwort erläutert. Grundsätzlich können Sie jedoch eine REST-Anforderung wie die folgende ausgeben:

$ curl --user "tom" \
       --request PATCH \
       --data '{"issue": "15", "head": "tom:new-branch", "base": "master"}' \
       https://api.github.com/repos/fred/fabproj/pulls

Dadurch wird die in Ausgabe 15 des fred/fabprojRepos enthaltene Pull-Anforderung geändert , um den new-branchZweig an der tom/fabprojGabel zu verwenden.

Bearbeiten: Hinweis: Laut Kommentaren dient das Obige nur zum Anhängen einer neuen Pull-Anforderung an ein vorhandenes Problem .

Tom
quelle
1
Konnte es nicht zum Laufen bringen. Es wurde beanstandet, dass das Feld issueeinen falschen Wert hatte, was möglicherweise darauf hindeutet, dass Sie bereits instanziierte Pull-Anforderungen nicht mehr ändern können. Schande.
mxcl
1
Sind Sie sicher, dass Sie Ihren API-Aufruf richtig verstanden haben? Soweit ich das beurteilen kann, sollte dies immer noch funktionieren und ist (irgendwie) dokumentiert. Siehe developer.github.com/v3/pulls (und suchen Sie nach "Pull-Anfrage erstellen" und dann nach "Alternative Eingabe")
Tom
14
Ich habe das heute noch einmal ausprobiert und kann bestätigen, dass es nicht mehr funktioniert. Ich werde die REST-APIs weiter untersuchen, in der Hoffnung, einen anderen Weg zu finden, dies zu tun.
Tom
1
Laut Entwicklerdokumenten sollte der Anforderungstyp bt PATCH sein. Eine andere Sache ist, dass die Kopf- / Basismodifikation derzeit nicht unterstützt wird. Ref: developer.github.com/v3/pulls/#update-a-pull-request
Shekhar
4
Hey Jian, wie Tom in den Kommentaren vom 13. Dezember 12 erwähnt hat, funktioniert dies (leider!) Nicht mehr ... was schade ist, da ich es heute gut hätte nutzen können, aber leider!
Pvandenberk
19

Ab dem 15.08.2016 ist dies nun nativ über Github möglich :

Sie können jetzt den Basiszweig einer Open-Pull-Anforderung ändern. Nachdem Sie eine Pull-Anforderung erstellt haben, können Sie den Basiszweig so ändern, dass die Änderungen in der Pull-Anforderung mit einem anderen Zweig verglichen werden. Wenn Sie den Basiszweig Ihrer ursprünglichen Pull-Anforderung ändern, anstatt einen neuen mit dem richtigen Basiszweig zu öffnen, können Sie wertvolle Arbeit und Diskussion behalten.

Michael clifford
quelle
So funktioniert es: Drücken Sie den Bearbeitungstitel, und dann wird die Schaltfläche "base:" angezeigt, die zur Änderung bereit ist.
AnneTheAgile
2

Ich könnte den Zielzweig ändern. Es ist wahr, dass wir den Namen des Zielzweigs in der PR nicht bearbeiten können. Der Trick besteht jedoch darin, den Zweig in etwas anderes umzubenennen und den Zielzweig in den bereits in PR vorhandenen Zweig umzubenennen.

Beispiel: Meine PR hat einen Namen wie "dev-4.9". Es gibt einen anderen Zweig mit dem Namen "qa-4.9". Ich möchte nur, dass "qa-4.9" der PR-Zielzweig ist. Schritte: 1 1) Benennen Sie den Zweig "dev-4.9" in "original-dev-4.9" um.

git checkout dev-4.9
git branch -w original-dev-4.9
git push origin original-dev-4.9

2) Benennen Sie den Zweig "qa-4.9" in "dev-4.9" um.

git checkout qa-4.9
git branch -w dev-4.9
git push origin dev-4.9 -f (force push to write entire branch to reflect dev-4.9)

3) Aktualisieren Sie die PR-URL und sehen Sie die Commits in Qa-4.9, die dort angezeigt werden.

Sateesh
quelle
1

Anstatt alle mit einem PR verbundenen Kommentare an einen gelöschten Zweig zu verlieren:

  1. Erstellen Sie den Zweig erneut lokal mit demselben Namen und demselben Inhalt wie der Zweig, zu dem Sie zusammenführen möchten.
  2. Drücken Sie diesen Zweig, um den Remote-Zweig neu zu erstellen. und dann
  3. Öffnen Sie die PR für die Filiale erneut.

Zum Beispiel haben Sie eine PR für branch1, die gelöscht wird. Sie möchten jetzt zusammenführen, um Kommentare zu Ihrer vorhandenen PR zu erstellen und beizubehalten:

  1. Git Checkout Master
  2. Git Pull
  3. Git Checkout -b Zweig1
  4. Git Push
  5. Öffnen Sie Ihre PR erneut für branch1
  6. Beim Zusammenführen mit Zweig1 zum Master zusammenführen.

Das ist ein bisschen hackig, aber weitaus besser als viele Kommentare zu zerstören.

William Zeller
quelle
Ich bin zunächst nicht gefolgt, um anderen Lesern (entweder> = dumm wie ich) zu erklären, dass dies der Fall ist, wenn Sie die Kontrolle über das Repo haben, bei dem Ihre PR eingereicht wurde. Ich suchte nach einer Möglichkeit, meine PR zu aktualisieren, die ich bei einem Open Source-Projekt eingereicht habe, das ich nicht kontrolliere.
RTPHarry
0

Github unterstützt dies jetzt. Schaltfläche Bearbeiten am rechten Ende der PR.

julian joseph
quelle
-2

In der Theorie...

Du sollst Github API verwenden .

Beispiel: Pull-Anfrage mit Curl bearbeiten

curl --user "your_github_username" \
     --request PATCH \
     --data '{"title":"newtitle","body":"newbody",...}' \
     https://api.github.com/repos/:owner/:repo/pulls/:number

Die detaillierte Liste der Daten finden Sie im Github-Entwicklerdokument

Beispiel: Ändern Sie den Namen meiner Pull-Anfrage

curl --user "jeremyclement" \
     --request PATCH \
     --data '{"title":"allows the control of files and folders permissions."}' \
     https://api.github.com/repos/Gregwar/Cache/pulls/9

aber in der Praxis ...

Es scheint, dass die Felder head/labelund head/refnicht bearbeitbar sind. Im Moment scheint die einzige Lösung die von Amber zu sein

hexaJer
quelle
Was trägt dies zu den aktuellen Antworten bei?
Léo Lam
Es bestätigt die Amber-Antwort trotz Toms.
HexaJer
2
Was bestätigt, dass diese Antwort überhaupt nicht benötigt wird. Dies fügt den aktuellen Antworten nichts hinzu. Toms Antwort hat bereits einen Hinweis, dass sie nicht mehr gilt, und die Kommentare weisen auch darauf hin.
Léo Lam