Antworten:
Ab dem 15.08.2016 ermöglicht GitHub das Ändern des Zielzweigs einer Pull-Anfrage über die GUI. Klicken Sie Edit
neben dem Titel auf und wählen Sie den Zweig aus der Dropdown-Liste aus.
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.
Der Übermittler kann dies ändern, wenn er die Pull-Anforderung ausgibt, aber sobald er sie ausgibt, können Sie sie nicht mehr ändern.
Auf der anderen Seite können Sie ihren Zweig manuell zusammenführen und pushen, was ich halbjährlich für fehlerhafte Pull-Anfragen mache.
Möglicherweise ist der hub
Edelstein hilfreich bei der Arbeit mit den Komponenten der Pull-Anforderung.
Dieses Juwel schließt den manuellen Prozess ab:
git checkout ${target_branch} && git merge ${remote}/${branch}
git push origin ...
git merge --no-ff ...
als @ GuillermoMansilla Erwähnungen in seiner Antwort zu verwenden.
Eine Alternative zur Verwendung des in anderen Antworten erwähnten Hub-Edelsteins besteht darin, über die Befehlszeile lokale Pull-Anforderungen zusammenzuführen . So können Sie Folgendes tun:
$ git fetch origin
$ git checkout *target_branch*
$ git merge pr/XXX
$ git push origin *target_branch*
Die obigen Befehle funktionieren nur direkt, wenn Sie Ihrer .git/config
Datei zuerst die folgende Zeile hinzufügen :
fetch = +refs/pull/*/head:refs/remotes/symbolic_name_origin_or_upstream/pr/*
Damit können Sie ALLE Pull-Anfragen herunterladen . Da dies für große Repos möglicherweise nicht erwünscht ist, hat GitHub die Anweisungen so geändert, dass sie die git fetch origin pull/ID/head:BRANCHNAME
Syntax enthalten. Dadurch wird eine Änderung der Konfigurationsdatei vermieden und nur diese einzelne Pull-Anforderung heruntergeladen.
Obwohl Sie die vorhandene Pull-Anforderung nicht ändern können, da sie nicht Ihre ist, können Sie problemlos eine neue erstellen, wenn das zugehörige Quell-Repository noch vorhanden ist - ja, auch wenn es sich um eine andere handelt.
Gehen Sie zum Repository des Übermittlers und erstellen Sie eine neue Pull-Anforderung in seinem Repository mit denselben Commits. Stellen Sie jedoch sicher, dass Sie den richtigen Zielzweig korrekt festgelegt haben.
Kehren Sie dann zu Ihrem eigenen Repository zurück und akzeptieren Sie die neue Pull-Anforderung. Voila!
An der Lösung von Daniel Pittman ist nichts auszusetzen. Ich würde diese Zusammenführungen jedoch als "kein schneller Vorlauf" behandeln, dh Schritt 3 ändern für:
git checkout ${target_branch} && git merge --no-ff ${remote}/${branch}
Durch die Verwendung --no-ff
wird der Verlauf leichter lesbar. Es wird klar sagen, dass $n
Commits von kamen $branch
, und es wird Ihnen auch das Leben erleichtern, wenn Sie etwas zurücksetzen müssen, das in diesem Zweig getan wurde.
Um auch die Frage von eoinoc zu beantworten und einen zusätzlichen Tipp zu geben:
Nach dem Zusammenführen werden Sie von Ihrem Git-Cli aufgefordert, eine Nachricht zu schreiben. Im Allgemeinen wird eine generische Nachricht mit der Aufschrift "So etwas" angezeigt
Führen Sie den Remote-Tracking-Zweig 'Benutzer / Zweig' in Ihrem Zweig zusammen
Stellen Sie sicher, dass Sie diese Nachricht bearbeiten und einen Verweis auf die Pull-Anforderungsnummer angeben. Das heißt: (Angenommen, die Pull-Anforderungsnummer ist 123)
Führen Sie den Remote-Tracking-Zweig 'Benutzer / Zweig' in Ihrem Zweig zusammen
Refs # 123 lösen was auch immer ...
Wenn Sie also das nächste Mal Ihre Seite mit Github-Problemen / Pull-Anforderungen besuchen und diese bestimmte Pull-Anforderung überprüfen, wird Ihre Nachricht mit einem Link angezeigt, über den Sie festlegen können, wo Sie die Zusammenführung durchgeführt haben.
Hier ist ein Screenshot von dem, was ich meine.
Gehen Sie dazu zur Homepage Ihres Repositorys, klicken Sie auf Zweige und ändern Sie den Standardzweig vom Master in einen anderen, in meinem Fall "dev".
Wenn danach jemand eine Pull-Anfrage erstellt, führt die merge
Schaltfläche die Anfrage automatisch zu "dev" und nicht zu master zusammen.